[Oracle] Solution to puzzles

Joy🌱·2023λ…„ 1μ›” 12일
0

🧩 Coding Challenges

λͺ©λ‘ 보기
12/20
post-thumbnail

🧩 ν•¨μˆ˜μ™€ κ·Έλ£Ήν™”λ₯Ό ν™œμš©ν•˜μ—¬ SQL 쿼리 짜기

Q1

πŸ’β€β™€οΈ μ˜μ–΄μ˜λ¬Έν•™κ³Ό(ν•™κ³Όμ½”λ“œ 002) ν•™μƒλ“€μ˜ ν•™λ²ˆκ³Ό 이름, μž…ν•™ 년도λ₯Ό μž…ν•™ 년도가 λΉ λ₯Έ 순으둜 ν‘œμ‹œν•˜λŠ” SQL λ¬Έμž₯을 μž‘μ„±ν•˜μ„Έμš”.
( 단, ν—€λ”λŠ” "ν•™λ²ˆ", "이름", "μž…ν•™λ…„λ„"둜 ν‘œμ‹œ)

🚩 Example Output 3 rows selected

ν•™λ²ˆμ΄λ¦„μž…ν•™λ…„λ„
9973003κΉ€μš©κ·Ό99/03/01
A473015λ°°μš©μ›04/03/01
A517105이신열05/03/01
SELECT
        STUDENT_NO ν•™λ²ˆ
    ,   STUDENT_NAME 이름
    ,   ENTRANCE_DATE μž…ν•™λ…„λ„
    FROM TB_STUDENT
    WHERE DEPARTMENT_NO = 002
    ORDER BY 3;

Q2

πŸ’β€β™€οΈ 좘 κΈ°μˆ λŒ€ν•™κ΅μ˜ ꡐ수 쀑 이름이 μ„Έ κΈ€μžκ°€ μ•„λ‹Œ κ΅μˆ˜κ°€ 두 λͺ… μžˆλ‹€κ³  ν•©λ‹ˆλ‹€. κ·Έ ꡐ수의 이름과 주민번호λ₯Ό 화면에 좜λ ₯ν•˜λŠ” SQL λ¬Έμž₯을 μž‘μ„±ν•΄ λ³΄μ„Έμš”.

🚩 Example Output 2 rows selected

PROFESSOR_NAMEPROFESSOR_SSN
κ°•ν˜601004-1100528
박강아름681201-2134896
SELECT
        PROFESSOR_NAME
    ,   PROFESSOR_SSN
    FROM TB_PROFESSOR
    WHERE LENGTH(PROFESSOR_NAME) <> '3';

πŸ’‘ Another Solution

SELECT 
       PROFESSOR_NAME
     , PROFESSOR_SSN
  FROM TB_PROFESSOR
 WHERE PROFESSOR_NAME NOT LIKE '___';

Q3

πŸ’β€β™€οΈ 좘 κΈ°μˆ λŒ€ν•™κ΅μ˜ λ‚¨μž κ΅μˆ˜λ“€μ˜ 이름과 λ‚˜μ΄λ₯Ό 좜λ ₯ν•˜λŠ” SQL λ¬Έμž₯을 μž‘μ„±ν•˜μ„Έμš”. μ΄λ•Œ, λ‚˜μ΄κ°€ 적은 μ‚¬λžŒμ—μ„œ λ§Žμ€ μ‚¬λžŒ μˆœμ„œλ‘œ 화면에 좜λ ₯λ˜λ„λ‘ λ§Œλ“œμ„Έμš”.
(단, ꡐ수 쀑 2000 λ…„ 이후 μΆœμƒμžλŠ” μ—†μœΌλ©° 좜λ ₯ ν—€λ”λŠ” "κ΅μˆ˜μ΄λ¦„", "λ‚˜μ΄"둜 ν•©λ‹ˆλ‹€. λ‚˜μ΄λŠ” β€˜λ§Œβ€™μœΌλ‘œ κ³„μ‚°ν•©λ‹ˆλ‹€.)

🚩 Example Output 75 rows selected

κ΅μˆ˜μ΄λ¦„λ‚˜μ΄
μ œμƒμ² 42
μ£Όμ˜μƒ42
. . . . . .. . . . . .
정진정74
μ΄λ„ν˜„74
SELECT
        PROFESSOR_NAME κ΅μˆ˜μ΄λ¦„
      ,  FLOOR(MONTHS_BETWEEN(SYSDATE, TO_DATE(19 || SUBSTR(PROFESSOR_SSN, 1, 6), 'RRRRMMDD')) / 12) λ‚˜μ΄
    FROM TB_PROFESSOR
    WHERE PROFESSOR_SSN LIKE '_______1%'
    ORDER BY 2;

πŸ’¬ Overall Comment

* μ²˜μŒμ— μ£Όλ―Όλ“±λ‘λ²ˆν˜Έ 데이터λ₯Ό 가지고 μ–΄λ–»κ²Œ λ‚˜μ΄λ₯Ό ꡬ할 수 μžˆμ„μ§€ ꡉμž₯히 λ§Žμ€ 고민을 ν–ˆλ‹€. 
  MONTHS_BETWEEN으둜 ν˜„μž¬ λ‚ μ§œ(SYSDATE)μ—μ„œ μƒλ…„μ›”μΌμ˜ μ°¨λ₯Ό κ΅¬ν•˜μ—¬ λ‚˜μ΄λ₯Ό ꡬ해야 ν–ˆλ‹€λŠ” 점은 
  μ•Œκ³ μžˆμ—ˆμœΌλ‚˜, 'μ§€μ •ν•œ 월이 λΆ€μ ν•©ν•©λ‹ˆλ‹€.'λ“±μ˜ 였λ₯˜κ°€ λ°œμƒν–ˆκ³  μ΄λŠ” '19'λ₯Ό μ•žμ— λͺ…μ‹œν•΄μ€ŒμœΌλ‘œμ¨ 
  ν•΄κ²°λ˜μ—ˆλ‹€. 2000λ…„λŒ€ 이전 μΆœμƒμ˜ κ΅μˆ˜λ“€μ΄λ―€λ‘œ, 'RRRR'을 μ‚¬μš©ν–ˆκ³ , κ²Œλ‹€κ°€ 1950λ…„ 이전에 μΆœμƒν•œ 
  κ΅μˆ˜λ“€μ΄ μ‘΄μž¬ν–ˆμœΌλ―€λ‘œ 50μ΄ν•˜μ˜ μˆ˜λŠ” 2000λ…„λŒ€λ‘œ μΈμ‹ν•˜λŠ” 'RRRR'의 νŠΉμ„±μ„ κ³ λ €ν•˜μ—¬ λ°˜λ“œμ‹œ 19λ₯Ό μ•žμ— 
  λΆ™μ—¬μ€¬μ–΄μ•Όν–ˆλ‹€.

Q4

πŸ’β€β™€οΈ κ΅μˆ˜λ“€μ˜ 이름 쀑 성을 μ œμ™Έν•œ μ΄λ¦„λ§Œ 좜λ ₯ν•˜λŠ” SQL λ¬Έμž₯을 μž‘μ„±ν•˜μ„Έμš”. 좜λ ₯ ν—€λ”λŠ” "이름"이 μ°νžˆλ„λ‘ ν•©λ‹ˆλ‹€.
(단, 성이 두 자인 경우의 κ΅μˆ˜λŠ” μ—†λ‹€κ³  κ°€μ •ν•˜μ„Έμš”.)

🚩 Example Output 114 rows selected

이름
μ§„μ˜
μœ€ν•„
. . . . . .
혁호
SELECT
        SUBSTR(PROFESSOR_NAME, 2) 이름
    FROM TB_PROFESSOR;

Q5

πŸ’β€β™€οΈ 좘 κΈ°μˆ λŒ€ν•™κ΅μ˜ μž¬μˆ˜μƒ μž…ν•™μžλ₯Ό κ΅¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€. μ–΄λ–»κ²Œ μ°Ύμ•„λ‚ΌκΉŒμš”?
μ΄λ•Œ, 19살에 μž…ν•™ν•˜λ©΄ 재수λ₯Ό ν•˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ κ°„μ£Όν•©λ‹ˆλ‹€.
(좜λ ₯ ν—€λ”λŠ” "ν•™λ²ˆ", "이름", "μž…ν•™ν•œ λ‚˜μ΄" μž…λ‹ˆλ‹€.)

🚩 Example Output 204 rows selected

ν•™λ²ˆμ΄λ¦„μž…ν•™ν•œ λ‚˜μ΄
A431016κ³ λ³‘ν›ˆ20
A431021κ΅¬λ³‘ν›ˆ20
. . . . . .. . . . . .. . . . . .
A241053이희수20
A241056이희진20
SELECT
        STUDENT_NO ν•™λ²ˆ
    ,   STUDENT_NAME 이름
    ,   FLOOR(MONTHS_BETWEEN(ENTRANCE_DATE, TO_DATE(SUBSTR(STUDENT_SSN, 1, 2), 'RR')) / 12) "μž…ν•™ν•œ λ‚˜μ΄"
    FROM TB_STUDENT
    WHERE FLOOR(MONTHS_BETWEEN(ENTRANCE_DATE, TO_DATE(SUBSTR(STUDENT_SSN, 1, 2), 'RR')) / 12) > 19;

πŸ’‘ Another Solution

SELECT 
       STUDENT_NO
     , STUDENT_NAME
     , EXTRACT(YEAR FROM ENTRANCE_DATE) - EXTRACT(YEAR FROM (TO_DATE(SUBSTR(STUDENT_SSN, 1, 2), 'RR'))) "μž…ν•™ν•œ λ‚˜μ΄"
  FROM TB_STUDENT
 WHERE EXTRACT(YEAR FROM ENTRANCE_DATE) - EXTRACT(YEAR FROM (TO_DATE(SUBSTR(STUDENT_SSN, 1, 2), 'RR'))) > 19;

πŸ“Œ Ref.

* EXTRACT : λ…„, μ›”, 일 정보λ₯Ό μΆ”μΆœν•˜μ—¬ λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜

πŸ’¬ Overall Comment

* 이 λ¬Έν•­ λ˜ν•œ ꡉμž₯ν•œ μ‹œκ°„μ„ μš”κ΅¬ν–ˆλ‹€. μ²˜μŒμ—λŠ” ꡐ수의 만 λ‚˜μ΄λ₯Ό κ΅¬ν•˜λŠ” 문항을 μ°Έκ³ ν•˜μ—¬ μ‘μš©ν•˜λ©΄ λ˜κ² λ‹€κ³  
  μƒκ°ν–ˆμœΌλ‚˜, 이 λ¬Έν•­μ—μ„œλŠ” 19μ‚΄ 초과의 λ‚˜μ΄μ— μž…ν•™ν•œ μž¬μˆ˜μƒμ„ κ΅¬ν•΄μ•Όν–ˆκΈ° λ•Œλ¬Έμ— 쑰금 λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ 
  μ ‘κ·Όν•΄μ•Όν–ˆλ‹€. 
  μž…ν•™ 년도와 μƒλ…„μ˜ μ°¨λ₯Ό κ΅¬ν•œ λ’€, 그것이 19λ₯Ό μ΄ˆκ³Όν•˜λ©΄ μž¬μˆ˜μƒμ΄λΌλŠ” 쿼리λ₯Ό μ§œμ•Όν–ˆλŠ”λ°, μ²˜μŒμ— λ‚΄λ¦Όμ²˜λ¦¬λ₯Ό 
  ν•˜μ§€μ•Šμ•„ 좜λ ₯λ˜λŠ” ν–‰μ˜ κ°―μˆ˜κ°€ 더 λ§Žμ€κ°€ν•˜λ©΄ κ°€κΉŒμŠ€λ‘œ μ•Œλ§žμ€ ν–‰μ˜ κ°―μˆ˜κ°€ λ‚˜μ™”μ§€λ§Œ λ‚˜μ΄μ˜ λ²”μœ„κ°€ 이해가 
  λ˜μ§€μ•Šμ•˜μ—ˆλ‹€.
  μ œμΆœμ„ ν•˜κ³ λ‚œ 뒀에도 κ³„μ†ν•΄μ„œ 무엇이 λ¬Έμ œμΈμ§€ 확인해본 κ²°κ³Ό, 메인 λ¦¬μ¦Œμ€ λ‚˜μ΄λ₯Ό FLOOR둜 λ‚΄λ¦Όμ²˜λ¦¬ν•΄μ•Όν–ˆκ³  
  λ”°λΌμ„œ 19초과 20μ΄ν•˜μ˜ λ²”μœ„(μ™œ μ΄λ ‡κ²Œ ν–ˆμ„ λ•Œ 204행이 λ‚˜μ™”λŠ”μ§€ 아직도 μ΄ν•΄λΆˆκ°€)κ°€ μ•„λ‹Œ κ·Έμ € 19초과의 
  λ²”μœ„λ§Œ 지정해주면 λ˜λŠ” κ²ƒμ΄μ—ˆλ‹€.
* λ˜ν•œ EXTRACT을 ν™œμš©ν•˜μ—¬ λ‚˜μ΄λ₯Ό κ΅¬ν•˜λŠ” 방법도 μžˆλ‹€λŠ” 것을 μ•Œκ²Œλ˜μ–΄ ꡉμž₯히 값진 λ¬Έν•­μ΄μ—ˆλ‹€.

Q6

πŸ’β€β™€οΈ 2020λ…„ ν¬λ¦¬μŠ€λ§ˆμŠ€λŠ” 무슨 μš”μΌμΌκΉŒμš”?

🚩 Example Output 1 rows selected

TO_CHAR(TO_DATE('201225', 'YYMMDD'), 'DAY')
κΈˆμš”μΌ
SELECT
        TO_CHAR(TO_DATE('201225', 'YYMMDD'), 'DAY')
    FROM DUAL;

πŸ“Œ Ref.

* TO_CHAR : TO_CHAR(λ‚ μ§œ, 'DAY') λ₯Ό ν™œμš©ν•˜λ©΄ ν•΄λ‹Ή λ‚ μ§œμ˜ μš”μΌμ„ μ•Œ 수 있음

Q7

πŸ’β€β™€οΈ TO_DATE('99/10/11','YY/MM/DD'), TO_DATE('49/10/11','YY/MM/DD') 은 각각 λͺ‡ λ…„ λͺ‡ μ›” λͺ‡ 일을 μ˜λ―Έν• κΉŒμš”?
λ˜ν•œ TO_DATE('99/10/11','RR/MM/DD'), TO_DATE('49/10/11','RR/MM/DD') 은 각각 λͺ‡ λ…„ λͺ‡ μ›” λͺ‡ 일을 μ˜λ―Έν• κΉŒμš”?

🚩 Example Output 1 rows selected

('99/10/11','YY/MM/DD')('49/10/11','YY/MM/DD')('99/10/11','RR/MM/DD')('49/10/11','RR/MM/DD')
2099λ…„ 10μ›” 11일2049λ…„ 10μ›” 11일1999λ…„ 10μ›” 11일2049λ…„ 10μ›” 11일
SELECT
        TO_CHAR(TO_DATE('99/10/11','YY/MM/DD'), 'YYYY"λ…„ "MM"μ›” "DD"일"') "('99/10/11','YY/MM/DD')"
    ,   TO_CHAR(TO_DATE('49/10/11','YY/MM/DD'), 'YYYY"λ…„ "MM"μ›” "DD"일"') "('49/10/11','YY/MM/DD')"
    ,   TO_CHAR(TO_DATE('99/10/11','RR/MM/DD'), 'RRRR"λ…„ "MM"μ›” "DD"일"') "('99/10/11','RR/MM/DD')"
    ,   TO_CHAR(TO_DATE('49/10/11','RR/MM/DD'), 'RRRR"λ…„ "MM"μ›” "DD"일"') "('49/10/11','RR/MM/DD')"
    FROM DUAL;

Q8

πŸ’β€β™€οΈ 좘 κΈ°μˆ λŒ€ν•™κ΅μ˜ 2000 년도 이후 μž…ν•™μžλ“€μ€ ν•™λ²ˆμ΄ A 둜 μ‹œμž‘ν•˜κ²Œ λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€. 2000년도 이전 ν•™λ²ˆμ„ 받은 ν•™μƒλ“€μ˜ ν•™λ²ˆκ³Ό 이름을 λ³΄μ—¬μ£ΌλŠ” SQL λ¬Έμž₯을 μž‘μ„±ν•˜μ„Έμš”.

🚩 Example Output 52 rows selected

STUDENT_NOSTUDENT_NAME
9556017μ„œμ„±μ² 
9732111μ •μ™„λ ¬
. . . . . .. . . . . .
9911206μž„μΆ©ν—Œ
SELECT
        STUDENT_NO
    ,   STUDENT_NAME
    FROM TB_STUDENT
    WHERE STUDENT_NO NOT LIKE '%A%';

Q9

πŸ’β€β™€οΈ 9. ν•™λ²ˆμ΄ A517178 인 ν•œμ•„λ¦„ ν•™μƒμ˜ 학점 총 평점을 κ΅¬ν•˜λŠ” SQL 문을 μž‘μ„±ν•˜μ„Έμš”.
단, μ΄λ•Œ 좜λ ₯ ν™”λ©΄μ˜ ν—€λ”λŠ” "평점" 이라고 찍히게 ν•˜κ³ , μ μˆ˜λŠ” λ°˜μ˜¬λ¦Όν•˜μ—¬ μ†Œμˆ˜μ  μ΄ν•˜ ν•œ μžλ¦¬κΉŒμ§€λ§Œ ν‘œμ‹œν•˜μ„Έμš”.

🚩 Example Output 1 rows selected

평점
3.6
SELECT 
        ROUND(AVG(POINT), 1) 평점
    FROM TB_GRADE
    WHERE STUDENT_NO = 'A517178'
    GROUP BY STUDENT_NO;

Q10

πŸ’β€β™€οΈ 학과별 ν•™μƒμˆ˜λ₯Ό κ΅¬ν•˜μ—¬ "ν•™κ³Όλ²ˆν˜Έ", "ν•™μƒμˆ˜(λͺ…)" 의 ν˜•νƒœλ‘œ 헀더λ₯Ό λ§Œλ“€μ–΄ 결과값이 좜λ ₯λ˜λ„λ‘ ν•˜μ„Έμš”.

🚩 Example Output 62 rows selected

ν•™κ³Όλ²ˆν˜Έν•™μƒμˆ˜(λͺ…)
00114
0023
. . . . . .. . . . . .
0628
SELECT
        DEPARTMENT_NO "ν•™κ³Όλ²ˆν˜Έ"
    ,   COUNT(DEPARTMENT_NO) "ν•™μƒμˆ˜(λͺ…)"
    FROM TB_STUDENT
    GROUP BY DEPARTMENT_NO
    ORDER BY 1;

Q11

πŸ’β€β™€οΈ 지도 ꡐ수λ₯Ό 배정받지 λͺ»ν•œ ν•™μƒμ˜ μˆ˜λŠ” λͺ‡ λͺ… 정도 λ˜λŠ”μ§€ μ•Œμ•„λ‚΄λŠ” SQL 문을 μž‘μ„±ν•˜μ„Έμš”.

🚩 Example Output 1 rows selected

COUNT(*)
9
SELECT
        COUNT(*)
    FROM TB_STUDENT
    WHERE COACH_PROFESSOR_NO IS NULL
    GROUP BY COACH_PROFESSOR_NO;

Q12

πŸ’β€β™€οΈ ν•™λ²ˆμ΄ A112113 인 κΉ€κ³ μš΄ ν•™μƒμ˜ 년도 별 평점을 κ΅¬ν•˜λŠ” SQL 문을 μž‘μ„±ν•˜μ„Έμš”.
단, μ΄λ•Œ 좜λ ₯ ν™”λ©΄μ˜ ν—€λ”λŠ” "년도", "년도 별 평점" 이라고 찍히게 ν•˜κ³ , μ μˆ˜λŠ” λ°˜μ˜¬λ¦Όν•˜μ—¬ μ†Œμˆ˜μ  μ΄ν•˜ ν•œ μžλ¦¬κΉŒμ§€ν•œ ν‘œμ‹œν•©λ‹ˆλ‹€.

🚩 Example Output 5 rows selected

년도년도 별 평점
20012.8
20022.3
20034
20043.5
3.2
SELECT
        SUBSTR(TERM_NO, 1, 4) 년도
    ,   ROUND(AVG(POINT), 1) "년도 별 평점"
    FROM TB_GRADE
    WHERE STUDENT_NO = 'A112113'
    GROUP BY ROLLUP(SUBSTR(TERM_NO, 1, 4));

Q13

πŸ’β€β™€οΈ ν•™κ³Ό 별 νœ΄ν•™μƒ 수λ₯Ό νŒŒμ•…ν•˜κ³ μž ν•©λ‹ˆλ‹€. ν•™κ³Ό λ²ˆν˜Έμ™€ νœ΄ν•™μƒ 수λ₯Ό ν‘œμ‹œν•˜λŠ” SQL λ¬Έμž₯을 μž‘μ„±ν•˜μ„Έμš”.

🚩 Example Output 62 rows selected

ν•™κ³Όμ½”λ“œλͺ…νœ΄ν•™μƒ 수
0012
0020
. . . . . .. . . . . .
0622
SELECT
        DEPARTMENT_NO ν•™κ³Όμ½”λ“œλͺ…
    ,   COUNT(DECODE(ABSENCE_YN, 'Y', '쑰이')) "νœ΄ν•™μƒ 수"
    FROM TB_STUDENT
    GROUP BY (DEPARTMENT_NO)
    ORDER BY 1;

πŸ’¬ Overall Comment

* μ²˜μŒμ—λŠ” COUNT(ABSENCE_YN)둜 μž‘μ„±ν•˜κ³  HAVINGμ ˆμ— ABSENCE_YN = 'Y'둜 그룹에 쑰건을 κ±Έμ–΄ μ‹€ν–‰ν–ˆλ‹€. 
  ν•˜μ§€λ§Œ νœ΄ν•™μƒ μˆ˜κ°€ μ—†λŠ” 002 λ“±μ˜ ν•™κ³Όμ½”λ“œλ“€μ΄ 좜λ ₯ μžμ²΄κ°€ λ˜μ§€ μ•Šμ•˜κ³  μ–΄λ–»κ²Œλ“  좜λ ₯ν•˜λ € λ‹€λ₯Έ 쑰건도 
  걸어보고 NULL값을 ν¬ν•¨μ‹œν‚€λŠ” COUNT(*)둜 μ‚¬μš©ν•΄λ³΄κΈ°λ„ ν–ˆλ‹€.
  ν•˜μ§€λ§Œ κ²°κ΅­ λ ˆμ‹œν”Όλ₯Ό μ°Έκ³ ν•˜μ—¬ HAVING절이 μ•„λ‹Œ DECODEλ₯Ό μ΄μš©ν•΄μ„œ νœ΄ν•™μƒ('Y')λ§Œμ„ '쑰이'λΌλŠ” 값을 
  갖도둝 ν•˜κ³ (무슨 값이 λ“€μ–΄κ°€λ˜ 상관X) μž¬ν•™μƒ('N')은 NULL 값을 갖도둝 ν–ˆλ‹€. λ•Œλ¬Έμ— NULL값을 μ œμ™Έν•œ 
  갯수λ₯Ό μ„ΈλŠ” COUNT(컬럼λͺ…)은 νœ΄ν•™μƒ 수만 μΉ΄μš΄νŠΈν•˜μ—¬ 좜λ ₯ν•œλ‹€.
  ν•¨μˆ˜λ“€μ΄ μ €λ§ˆλ‹€ ꡉμž₯히 λ‹€μ–‘ν•œ κΈ°λŠ₯듀을 κ°–μΆ”κ³  μžˆλŠ”λ°, 이λ₯Ό κΈ°μ–΅ν•˜κ³  정말 잘 ν™œμš©ν•΄μ•Όκ² λ‹€κ³  μƒκ°ν•œ 
  계기가 λ˜μ—ˆλ‹€. 특히 DECODE의 κΈ°λŠ₯을 μ΄μš©ν•œ μ € 뢀뢄이 ꡉμž₯히 μΈμƒκΉŠκ³  κΌ­ λ‚΄ κ²ƒμœΌλ‘œ λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•΄λ³΄κ³ μ‹Άλ‹€.

Q14

πŸ’β€β™€οΈ 좘 λŒ€ν•™κ΅μ— λ‹€λ‹ˆλŠ” 동λͺ…이인 ν•™μƒλ“€μ˜ 이름을 찾고자 ν•©λ‹ˆλ‹€. μ–΄λ–€ SQL λ¬Έμž₯을 μ‚¬μš©ν•˜λ©΄ κ°€λŠ₯ν• κΉŒμš”?

🚩 Example Output 20 rows selected

동일이름동λͺ…인 수
κΉ€κ²½λ―Ό2
κΉ€λͺ…μ² 2
. . . . . .. . . . . .
μ‘°κΈ°ν˜„2
μ΅œνš¨μ •2
SELECT
        STUDENT_NAME 동일이름
    ,   COUNT(STUDENT_NAME) "동λͺ…인 수"
    FROM TB_STUDENT
    GROUP BY STUDENT_NAME
    HAVING COUNT(STUDENT_NAME) NOT IN 1
    ORDER BY 1;

πŸ’‘ Another Solution

SELECT 
       STUDENT_NAME AS 동일이름
     , COUNT(*) AS "동λͺ…인 수"
  FROM TB_STUDENT
 GROUP BY STUDENT_NAME
 HAVING COUNT(*) > 1
 ORDER BY 1;

Q15

πŸ’β€β™€οΈ ν•™λ²ˆμ΄ A112113인 κΉ€κ³ μš΄ ν•™μƒμ˜ 년도, ν•™κΈ° 별 평점과 년도 별 λˆ„μ  평점 , 총 평점을 κ΅¬ν•˜λŠ” SQL 문을 μž‘μ„±ν•˜μ„Έμš”.
(단, 평점은 μ†Œμˆ˜μ  1 μžλ¦¬κΉŒμ§€λ§Œ λ°˜μ˜¬λ¦Όν•˜μ—¬ ν‘œμ‹œν•©λ‹ˆλ‹€.)

🚩 Example Output 14 rows selected

년도학기평점
2001012.5
2001023
20012.8
. . . . . .. . . . . .. . . . . .
2004014
2004023
20043.5
3.2
SELECT
        SUBSTR(TERM_NO, 1, 4) 년도
    ,   SUBSTR(TERM_NO, 5, 2) ν•™κΈ°
    ,   ROUND(AVG(POINT), 1) 평점
    FROM TB_GRADE
    WHERE STUDENT_NO = 'A112113'
    GROUP BY ROLLUP(SUBSTR(TERM_NO, 1, 4), SUBSTR(TERM_NO, 5, 2))
    ORDER BY 1;

profile
Tiny little habits make me

0개의 λŒ“κΈ€