SQL 알고리즘 코드카타

SQL 알고리즘 코드카타 19일차(4) 26.01.17(토)

nom_de_plume 2026. 1. 17. 14:07

부제:

취소되지 않은 진료 예약 조회하기, 레벨 4

 

1. 문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/132204
2. 정답 코드: 

SELECT
    a.apnt_no,
    p.pt_name,
    a.pt_no,
    a.mcdp_cd,
    d.dr_name,
    a.apnt_ymd
from appointment as a
inner join patient as p
    on a.pt_no = p.pt_no
inner join doctor as d
    on d.dr_id = a.mddr_id
where date(apnt_ymd) = '2022-04-13'
    and apnt_cncl_yn = 'n'
    and d.mcdp_cd = 'cs'
order by a.apnt_ymd asc;


3. 오류 상황:

SELECT
    a.apnt_no,
    p.pt_name,
    a.pt_no,
    a.mcdp_cd,
    d.dr_name,
    a.apnt_ymd
from appointment as a
inner join patient as p
    on a.pt_no = p.pt_no
inner join doctor as d
    on d.dr_id = a.mddr_id
where apnt_ymd like ('%2022-04-13%')
    and apnt_cncl_yn = 'y'
    and d.mcdp_cd = 'cs'
order by a.apnt_ymd asc;

=> '취소되지 않은' 내역 조회 오류

=> 날짜 필터링 오류


4. 시도 방법:

=> apnt_cncl_yn = 'n' 조회

=> date() 함수 활용


5. 최종 문제 해결 방법:

=> Y는 Yes(취소됨), N은 No(취소되지 않음)를 의미하기 때문에 apnt_cncl_yn = 'n' 조회

=> DATE_FORMAT(apnt_ymd, '%Y-%m-%d') = '2022-04-13' 처럼 날짜 부분만 추출해서 비교하거나, DATE(apnt_ymd) = '2022-04-13' 같은 함수를 사용