[ํ๋ก๊ทธ๋๋จธ์ค] ์ทจ์๋์ง ์์ ์ง๋ฃ ์์ฝ ์กฐํํ๊ธฐ
๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ
์คํธ ์ฐ์ต,
https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle์์ ๋ฐํ๋๋ค.
โ ๋ฌธ์
๋ฌธ์ ์ค๋ช
๋ค์์ ํ์ ์ ๋ณด๋ฅผ ๋ด์ PATIENT ํ ์ด๋ธ๊ณผ ์์ฌ ์ ๋ณด๋ฅผ ๋ด์ DOCTOR ํ ์ด๋ธ, ๊ทธ๋ฆฌ๊ณ ์ง๋ฃ ์์ฝ๋ชฉ๋ก์ ๋ด์ APPOINTMENT์ ๋ํ ํ ์ด๋ธ์ ๋๋ค. PATIENT ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ PT_NO, PT_NAME, GEND_CD, AGE, TLNO๋ ๊ฐ๊ฐ ํ์๋ฒํธ, ํ์์ด๋ฆ, ์ฑ๋ณ์ฝ๋, ๋์ด, ์ ํ๋ฒํธ๋ฅผ ์๋ฏธํฉ๋๋ค.
Column name | Type | Nullable |
PT_NO | VARCHAR(N) | FALSE |
PT_NAME | VARCHAR(N) | FALSE |
GEND_CD | VARCHAR(N) | FALSE |
AGE | INTEGER | FALSE |
TLNO | VARCHAR(N) | TRUE |
DOCTOR ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO๋ ๊ฐ๊ฐ ์์ฌ์ด๋ฆ, ์์ฌID, ๋ฉดํ๋ฒํธ, ๊ณ ์ฉ์ผ์, ์ง๋ฃ๊ณผ์ฝ๋, ์ ํ๋ฒํธ๋ฅผ ๋ํ๋ ๋๋ค.
Column name | Type | Nullable |
DR_NAME | VARCHAR(N) | FALSE |
DR_ID | VARCHAR(N) | FALSE |
LCNS_NO | VARCHAR(N) | FALSE |
HIRE_YMD | DATE | FALSE |
MCDP_CD | VARCHAR(N) | TRUE |
TLNO | VARCHAR(N) | TRUE |
APPOINTMENT ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ APNT_YMD, APNT_NO, PT_NO, MCDP_CD, MDDR_ID, APNT_CNCL_YN, APNT_CNCL_YMD๋ ๊ฐ๊ฐ ์ง๋ฃ ์์ฝ์ผ์, ์ง๋ฃ์์ฝ๋ฒํธ, ํ์๋ฒํธ, ์ง๋ฃ๊ณผ์ฝ๋, ์์ฌID, ์์ฝ์ทจ์์ฌ๋ถ, ์์ฝ์ทจ์๋ ์ง๋ฅผ ๋ํ๋ ๋๋ค.
Column name | Type | Nullable |
APNT_YMD | TIMESTAMP | FALSE |
APNT_NO | INTEGER | FALSE |
PT_NO | VARCHAR(N) | FALSE |
MCDP_CD | VARCHAR(N) | FALSE |
MDDR_ID | VARCHAR(N) | FALSE |
APNT_CNCL_YN | VARCHAR(N) | TRUE |
APNT_CNCL_YMD | DATE | TRUE |
๋ฌธ์
PATIENT, DOCTOR ๊ทธ๋ฆฌ๊ณ APPOINTMENT ํ ์ด๋ธ์์ 2022๋ 4์ 13์ผ ์ทจ์๋์ง ์์ ํ๋ถ์ธ๊ณผ(CS) ์ง๋ฃ ์์ฝ ๋ด์ญ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ง๋ฃ์์ฝ๋ฒํธ, ํ์์ด๋ฆ, ํ์๋ฒํธ, ์ง๋ฃ๊ณผ์ฝ๋, ์์ฌ์ด๋ฆ, ์ง๋ฃ์์ฝ์ผ์ ํญ๋ชฉ์ด ์ถ๋ ฅ๋๋๋ก ์์ฑํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ์ง๋ฃ์์ฝ์ผ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
โ ํ์ด
๋ฌธ์ ์๊ตฌ์ฌํญ
2022๋ 4์ 13์ผ ์ทจ์๋์ง ์์ > ์กฐ๊ฑด1
ํ๋ถ์ธ๊ณผ(CS) ์ง๋ฃ ์์ฝ ๋ด์ญ > ์กฐ๊ฑด2
๊ฒฐ๊ณผ๋ ์ง๋ฃ์์ฝ์ผ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ > ์ ๋ ฌ์กฐ๊ฑด1
JOIN ๊ด๊ณ
PATIENT -----( ํ์๋ฒํธ )-------- APPOINTMENT ----------( ์์ฌID ) ------------- DOCTOR
SELECT AP.APNT_NO, P.PT_NAME, P.PT_NO, AP.MCDP_CD, D.DR_NAME, AP.APNT_YMD
FROM APPOINTMENT AP
LEFT JOIN DOCTOR D
ON AP.MDDR_ID = D.DR_ID
LEFT JOIN PATIENT P
ON AP.PT_NO = P.PT_NO
WHERE AP.APNT_YMD LIKE '2022-04-13%'
AND AP.MCDP_CD = 'CS'
AND AP.APNT_CNCL_YN = 'N'