๐Ÿ’ฏ Coding Test/SQL ํ…Œ์ŠคํŠธ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 4) - ์ทจ์†Œ๋˜์ง€ ์•Š์€ ์ง„๋ฃŒ ์˜ˆ์•ฝ ์กฐํšŒํ•˜๊ธฐ

Dev_sHu 2024. 4. 7. 11:05

1) ๋ฌธ์ œ ์„ค๋ช…

  • ๋‹ค์Œ์€ ํ™˜์ž ์ •๋ณด๋ฅผ ๋‹ด์€ 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

2) ๋ฌธ์ œ

  • PATIENT, DOCTOR ๊ทธ๋ฆฌ๊ณ  APPOINTMENT ํ…Œ์ด๋ธ”์—์„œ 2022๋…„ 4์›” 13์ผ ์ทจ์†Œ๋˜์ง€ ์•Š์€ ํ‰๋ถ€์™ธ๊ณผ(CS) ์ง„๋ฃŒ ์˜ˆ์•ฝ ๋‚ด์—ญ์„ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

  • ์ง„๋ฃŒ์˜ˆ์•ฝ๋ฒˆํ˜ธ, ํ™˜์ž์ด๋ฆ„, ํ™˜์ž๋ฒˆํ˜ธ, ์ง„๋ฃŒ๊ณผ์ฝ”๋“œ, ์˜์‚ฌ์ด๋ฆ„, ์ง„๋ฃŒ์˜ˆ์•ฝ์ผ์‹œ ํ•ญ๋ชฉ์ด ์ถœ๋ ฅ๋˜๋„๋ก ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

  • ๊ฒฐ๊ณผ๋Š” ์ง„๋ฃŒ์˜ˆ์•ฝ์ผ์‹œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

3) ์˜ˆ์‹œ

  • PATIENT ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™๊ณ ,
         
PT_NO PT_NAME GEND_CD AGE TLNO
PT22000019 ๋ฐ”๋ผ W 10 01079068799
PT22000043 ์˜ค์Šค์™ˆ๋“œ M 68 01031294124
PT22000052 ์ œ๋‹ˆ W 60 NULL
PT22000071 ๋ชฌ๋ชฌ M 31 01076489209
PT22000097 ์Šˆ๊ฐ€ M 19 NULL
  • DOCTOR ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™๊ณ ,
           
DR_NAME DR_ID LCNS_NO HIRE_YMD MCDP_CD TLNO
๋ฃจํ”ผ DR20090029 LC00010001 2009-03-01 CS 01085482011
๋‹ˆ๋ชจ DR20200012 LC00911162 2020-03-01 CS 01089483921
ํ•‘ํฌํ DR20140011 LC00082201 2014-03-01 NP 01098428957
์ ค๋ผ๋น„ DR20160031 LC00340327 2016-11-01 OB 01023981922
ํ† ๋ฆฌ DR20190129 LC00099911 2019-03-01 NS 01058390758
  • APPOINTMENT ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ,
             
APNT_YMD APNT_NO PT_NO MCDP_CD MDDR_ID APNT_CNCL_YN APNT_CNCL_YMD
2022-04-13 12:30:00.000000 42 PT22000071 CS DR20090029 N NULL
2022-04-13 15:30:00.000000 43 PT22000019 CS DR20200012 N NULL
2022-04-13 09:00:00.000000 46 PT22000043 CS DR20090029 N NULL
2022-07-09 11:00:00.000000 74 PT22000042 NP DR20100011 N NULL
2022-12-13 12:30:00.000000 110 PT22000097 NP DR20160011 Y 2022-12-03
  • SQL์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
           
APNT_NO PT_NAME PT_NO MCDP_CD DR_NAME APNT_YMD
46 ์˜ค์Šค์™ˆ๋“œ PT22000043 CS ๋ฃจํ”ผ 2022-04-13 09:00:00.000000
42 ๋ชฌ๋ชฌ PT22000071 CS ๋ฃจํ”ผ 2022-04-13 12:30:00.000000
43 ๋ฐ”๋ผ PT22000019 CS ๋‹ˆ๋ชจ 2022-04-13 15:30:00.000000

4) ํ’€์ด

SELECT APNT_NO
     , (SELECT PT_NAME
        FROM PATIENT p
        WHERE p.PT_NO = a.PT_NO) AS "PT_NAME"
     , PT_NO
     , MCDP_CD
     , (SELECT DR_NAME
        FROM DOCTOR d
        WHERE d.DR_ID = a.MDDR_ID) AS "DR_NAME"
     , APNT_YMD
FROM APPOINTMENT a
WHERE MCDP_CD = 'CS' 
AND DATE_FORMAT(APNT_YMD, '%Y-%m-%d') = '2022-04-13'
AND APNT_CNCL_YN = 'N'
ORDER BY APNT_YMD ASC;

 

[Reference]

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๋ฐ˜์‘ํ˜•