프로그래머스/My SQL

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

싱싱한복초이 2024. 12. 23. 16:10

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

[문제]

PATIENT, DOCTOR 그리고 APPOINTMENT 테이블에서 2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회하는 SQL문을 작성해주세요. 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성해주세요. 결과는 진료예약일시를 기준으로 오름차순 정렬해주세요.

 

[나의 풀이]

SELECT APNT_NO, PT_NAME, A.PT_NO, A.MCDP_CD, DR_NAME, APNT_YMD
FROM APPOINTMENT A LEFT JOIN PATIENT P ON A.PT_NO = P.PT_NO
LEFT JOIN DOCTOR D ON A.MDDR_ID = D.DR_ID
WHERE DATE_FORMAT(APNT_YMD,'%Y-%m-%d') = '2022-04-13' 
    AND A.MCDP_CD = 'CS' 
    AND APNT_CNCL_YN = 'N'
ORDER BY APNT_YMD;

 

[다른 풀이]

SELECT AP.APNT_NO, P.PT_NAME, AP.PT_NO, AP.MCDP_CD, D.DR_NAME, AP.APNT_YMD
FROM APPOINTMENT AP 
JOIN DOCTOR D ON D.DR_ID = AP.MDDR_ID
JOIN PATIENT P ON P.PT_NO = AP.PT_NO
WHERE AP.APNT_CNCL_YMD IS NULL AND AP.MCDP_CD = 'CS' AND AP.APNT_YMD LIKE '2022-04-13%'
ORDER BY AP.APNT_YMD

 

WHERE절의 APNT_YMD조건을 위 방식들 외에도 다양하게 표현할 수 있다. 

TO_CHAR(B.APNT_YMD, 'YYYY-MM-DD') = '2022-04-13'
LEFT(APNT_YMD,10) = '2022-04-13'