해당 문제는 여기에서 확인하실 수 있습니다.
- 문제 이해 시간: 5분
- 문제 해결 시간: 8분
- 코드 시도 횟수: 2회
주어진 문제는 환자, 의사, 예약 정보가 각각 다른 테이블에 분산되어 있는 구조입니다. 예약 테이블이 환자번호와 의사ID를 통해 다른 두 테이블과 연결되어 있으므로, 이를 기준으로 데이터를 통합해야 합니다.
출력해야 할 정보인 예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시는 세 테이블에 걸쳐 있으며, 이 중 예약 테이블이 가장 중심이 됩니다. 데이터 추출 시 2022년 4월 13일이라는 날짜 조건, 흉부외과라는 진료과 조건, 그리고 취소되지 않은 예약이라는 상태 조건을 고려해야 하며, NULL 값 처리도 필요합니다.
최종적으로 시간 데이터는 마이크로초까지 표시되어야 하고, 이를 기준으로 오름차순 정렬이 필요하다는 점을 고려하여 쿼리를 설계해야 합니다.
-- 1. APPOINTMENT, PATIENT, DOCTOR 테이블 조인 후 조건에 맞는 데이터 조회
-- 2. WHERE 절로 흉부외과, 날짜, 취소되지 않은 예약 필터링
-- 3. 진료예약일시 기준 오름차순 정렬
SELECT
A.APNT_NO, -- 진료예약번호
P.PT_NAME, -- 환자이름
A.PT_NO, -- 환자번호
A.MCDP_CD, -- 진료과코드
D.DR_NAME, -- 의사이름
A.APNT_YMD AS "APNT_YMD" -- 진료예약일시
FROM
APPOINTMENT A
JOIN PATIENT P ON A.PT_NO = P.PT_NO -- 환자 정보 조인
JOIN DOCTOR D ON A.MDDR_ID = D.DR_ID -- 의사 정보 조인
WHERE
A.MCDP_CD = 'CS' -- 흉부외과 진료만 선택
AND DATE(A.APNT_YMD) = '2022-04-13' -- 2022년 4월 13일 예약만 선택
AND (A.APNT_CNCL_YN = 'N'
OR A.APNT_CNCL_YN IS NULL) -- 취소되지 않은 예약만 선택
ORDER BY
A.APNT_YMD ASC -- 진료예약일시 오름차순 정렬