ํ๋ก๊ทธ๋๋จธ์ค_12์ธ ์ดํ์ธ ์ฌ์ ํ์ ๋ชฉ๋ก ์ถ๋ ฅํ๊ธฐ
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/132201
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ค์์ ์ข ํฉ๋ณ์์ ๋ฑ๋ก๋ ํ์์ ๋ณด๋ฅผ ๋ด์ PATIENT ํ ์ด๋ธ์ ๋๋ค. PATIENT ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ PT_NO, PT_NAME, GEND_CD, AGE, TLNO๋ ๊ฐ๊ฐ ํ์๋ฒํธ, ํ์์ด๋ฆ, ์ฑ๋ณ์ฝ๋, ๋์ด, ์ ํ๋ฒํธ๋ฅผ ์๋ฏธํฉ๋๋ค.
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 ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค.