본문 바로가기

SQL/프로그래머스

SQL 프로그래머스 3일차 _2 3번 JOIN , DATE 특정날짜 찾기

  1. 취소되지 않은 진료 예약 조회하기

문제

PATIENT, DOCTOR 그리고 APPOINTMENT 테이블에서 2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회하는 SQL문을 작성해주세요. 진료예약번호, 환자이름, 환자번호, 진료과코드,

의사이름, 진료예약일시 항목이 출력되도록 작성해주세요. 결과는 진료예약일시를 기준으로 오름차순 정렬해주세요.

 

 

PATIENT 테이블이 다음과 같고,

PT_NOPT_NAMEGEND_CDAGETLNO
PT22000019 바라 W 10 01079068799
PT22000043 오스왈드 M 68 01031294124
PT22000052 제니 W 60 NULL
PT22000071 몬몬 M 31 01076489209
PT22000097 슈가 M 19 NULL

DOCTOR 테이블이 다음과 같고,

DR_NAMEDR_IDLCNS_NOHIRE_YMDMCDP_CDTLNO

루피 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_YMDAPNT_NOPT_NOMCDP_CDMDDR_IDAPNT_CNCL_YNAPNT_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

 

-- 4월 13일이 진료자 중에 취소하지 않은 환자

SELECT C.APNT_NO , C.PT_NAME ,C.PT_NO ,C.MCDP_CD ,C.DR_NAME ,C.APNT_YMD
FROM (
    -- 3개 테이블 조인 
    SELECT A.APNT_NO , P.PT_NAME ,P.PT_NO ,D.MCDP_CD 
            ,D.DR_NAME ,A.APNT_YMD ,A.APNT_CNCL_YN 
    FROM APPOINTMENT A  
        JOIN PATIENT P 
        JOIN DOCTOR D
        ON A.PT_NO = P.PT_NO 
        AND A.MDDR_ID = D.DR_ID
        ) C
-- 조건은 INLINE에서 처리 해도 상관 없다,
WHERE  C.APNT_CNCL_YN = 'N'
    AND  DATE(C.APNT_YMD) = '2022-04-13'  -- DATE_FORMAT보다 편하다. DATE는 자동으로 YMD를 지정해준다
    AND C.MCDP_CD LIKE '%CS' 
ORDER BY C.APNT_YMD

정답 

APNT_NOPT_NAMEPT_NOMCDP_CDDR_NAMEAPNT_YMD

43 바라 PT22000019 CS 니모 2022-04-13 15:30:00