๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(SQL)

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_12์„ธ ์ดํ•˜์ธ ์—ฌ์ž ํ™˜์ž ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ

by carrot0911 2024. 11. 14.

๋ฌธ์ œ ์„ค๋ช…

https://school.programmers.co.kr/learn/courses/30/lessons/132201

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

๋‹ค์Œ์€ ์ข…ํ•ฉ๋ณ‘์›์— ๋“ฑ๋ก๋œ ํ™˜์ž์ •๋ณด๋ฅผ ๋‹ด์€ PATIENT ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. PATIENT ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ PT_NO, PT_NAME, GEND_CDAGETLNO๋Š” ๊ฐ๊ฐ ํ™˜์ž๋ฒˆํ˜ธ, ํ™˜์ž์ด๋ฆ„, ์„ฑ๋ณ„์ฝ”๋“œ, ๋‚˜์ด, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Column name Type Nullable
PT_NO VARCHAR(10) FALSE
PT_NAME VARCHAR(20) FALSE
GEND_CD VARCHAR(1) FALSE
AGE INTEGER FALSE
TLNO VARCHAR(50) TRUE

๋ฌธ์ œ

PATIENT ํ…Œ์ด๋ธ”์—์„œ 12์„ธ ์ดํ•˜์ธ ์—ฌ์žํ™˜์ž์˜ ํ™˜์ž์ด๋ฆ„, ํ™˜์ž๋ฒˆํ˜ธ, ์„ฑ๋ณ„์ฝ”๋“œ, ๋‚˜์ด, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, 'NONE'์œผ๋กœ ์ถœ๋ ฅ์‹œ์ผœ ์ฃผ์‹œ๊ณ  ๊ฒฐ๊ณผ๋Š” ๋‚˜์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ , ๋‚˜์ด ๊ฐ™๋‹ค๋ฉด ํ™˜์ž์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

์˜ˆ์‹œ

PATIENT ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ

PT_NO PT_NAME GEND_CD AGE TLNO
PT22000003 ๋ธŒ๋ผ์šด M 18 01031246641
PT22000004 ํฌ๋กฑ M 7 NULL
PT22000006 ๋ฝ€๋ฝ€ W 8 NULL
PT22000009 ํ•œ๋‚˜ W 12 01032323117
PT22000012 ๋ฟก๋ฟก์ด M 5 NULL

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC;

์ฝ”๋“œ ์„ค๋ช…

  • SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO : ์ •๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ปฌ๋Ÿผ๋“ค์„ ์„ ํƒํ•œ๋‹ค.
    • IFNULL(TLNO, 'NONE') AS TLNO : TLNO ์ปฌ๋Ÿผ์—์„œ NULL ๊ฐ’์ด ์กด์žฌํ•œ๋‹ค๋ฉด 'NONE'์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค. AS TLNO๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ถœ๋ ฅ๋˜๋Š” ์ปฌ๋Ÿผ๋ช…์ด IFNULL(TLNO, 'NONE')๋กœ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.
  • FROM PATIENT : PATIENT ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  • WHERE AGE <= 12 AND GEND_CD = 'W' : ๋‚˜์ด๊ฐ€ 12์‚ด ์ด์ƒ์ด๊ณ  ์„ฑ๋ณ„์ด ์—ฌ์ž์ธ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•œ๋‹ค.
  • ORDER BY AGE DESC, PT_NAME ASC : AGE ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ , AGE ์ปฌ๋Ÿผ ๊ฐ’์ด ๋™์ผํ•˜๋‹ค๋ฉด PT_NAME ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค.