[프로그래머스 SQL] 취소되지 않은 진료 예약 조회하기
정답코드
# 2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회
# 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성
# 결과는 진료예약일시를 기준으로 오름차순 정렬
SELECT
A.APNT_NO,
P.PT_NAME,
P.PT_NO,
A.MCDP_CD,
D.DR_NAME,
A.APNT_YMD
FROM PATIENT AS P
JOIN APPOINTMENT AS A ON P.PT_NO = A.PT_NO
JOIN DOCTOR AS D ON D.DR_ID = A.MDDR_ID
WHERE A.MCDP_CD = 'CS'
AND A.APNT_CNCL_YN = 'N'
AND A.APNT_YMD LIKE '2022-04-13%'
ORDER BY 6 ASC
문제 - Level 4
2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회하는 SQL문 작성.
진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성.
결과는 진료예약일시를 기준으로 오름차순 정렬.
문제 설명 및 풀이
이 문제는 문자 함수를 활용하면 쉽게 풀리는 문제였음. 조인 같은 경우는 2번의 조인을 해주면 되는거라서 너무 쉽고, 이제 조건을 걸어주는게 이 문제의 핵심인데 Date 관련 컬럼이 걸림돌이 되는 문제였다. 분/초/밀리초까지 출력을 해야하는 문제인데 오히려 그렇게 하면 틀려버리는(?) 약간 이상한 문제인 것 같다. 이미 APNT_YMD 자체가 date 함수이기에, LIKE 문자 함수를 사용해서 '2022-04-13'를 맞춰주기만 하면 풀린다. 문제 출제의 의도는 잘 모르겠지만, 어려운 문제는 아닌데 왜 안풀릴까 고민하다가 답안들을 찾아서 구글링해보니 정말 간단하게 LIKE를 사용해서 풀어버리는.. 현타가 많이 온 문제였다^^
* LIKE '_문자열%' : '%' 부분일치, ' _ '글자개수 일치
ex) APNT_YMD = '2022-04-013 12:30:00' 와 같은 경우, APNT_YMD LIKE '2022-04-13%'
WHERE OPTIONS LIKE "%네비게이션%"
https://school.programmers.co.kr/learn/courses/30/lessons/132204
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr