📜 문제 설명
다음은 환자 정보를 담은 PATIENT 테이블과 의사 정보를 담은 DOCTOR 테이블, 그리고 진료 예약목록을 담은 APPOINMENT에 대한
테이블입니다.
PATIENT 테이블은 다음과 같으며 PT_NO, PT_NAME, GEND_CD, AGE, TLNO는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다.
Column name | Type | Nullable |
PT_NO | VARCHAR(N) | FALSE |
PT_NAME | VARCHAR(N) | FALSE |
GEND_CD | VARCHAR(N) | FALSE |
AGE | INTEGER | FALSE |
TLNO | VARCHAR(N) | TRUE |
DOCTOR 테이블은 다음과 같으며 DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO는 각각 의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호를 나타냅니다.
Column name | Type | Nullable |
DR_NAME | VARCHAR(N) | FALSE |
DR_ID | VARCHAR(N) | FALSE |
LCNS_NO | VARCHAR(N) | FALSE |
HIRE_YMD | DATE | FALSE |
MCDP_CD | VARCHAR(N) | TRUE |
TLNO | VARCHAR(N) | TRUE |
APPOINTMENT 테이블은 다음과 같으며 APNT_YMD, APNT_NO, PT_NO, MCDP_CD, MDDR_ID, APNT_CNCL_YN, APNT_CNCL_YMD는 각각 진료 예약일시, 진료예약번호, 환자번호, 진료과코드, 의사ID, 예약취소여부, 예약취소날짜를 나타냅니다.
Column name | Type | Nullable |
APNT_YMD | TIMESTAMP | FALSE |
APNT_NO | INTEGER | FALSE |
PT_NO | VARCHAR(N) | FALSE |
MCDP_CD | VARCHAR(N) | FALSE |
MDDR_ID | VARCHAR(N) | FALSE |
APNT_CNCL_YN | VARCHAR(N) | TRUE |
APNT_CNCL_YMD | DATE | TRUE |
❓ 문제
PATIENT, DOCTOR 그리고 APPOINMENT 테이블에서 2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회하는 SQL문을 작성해주세요.
진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성해주세요. 결과는 진료예약일시를 기준으로 오름차순 정렬해주세요.
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/132204
💡 문제 풀이
세 테이블을 조인해서 풀 수 있는 문제이다.
테이블이 세 개고 컬럼 수가 많아서 헷갈릴 수는 있지만 평이하게 풀 수 있다.
- APPOINTMENT, PATIENT 테이블을 환자 아이디 기준으로 조인
- APPOINTMENT, DOCTOR 테이블을 의사 아이디 기준으로 조인
- 조건절 작성
SELECT
a.apnt_no, p.pt_name, p.pt_no, a.mcdp_cd
, d.dr_name, a.apnt_ymd
FROM appointment a JOIN patient p ON a.pt_no = p.pt_no
JOIN doctor d ON a.mcdp_cd = d.mcdp_cd AND a.mddr_id = d.dr_id
WHERE a.apnt_cncl_yn = 'N'
AND TO_CHAR(a.apnt_ymd, 'YYYY-MM-DD') = '2022-04-13'
ORDER BY a.apnt_ymd
'✨APS (Algorithm Problem Solving) > 프로그래머스 SQL' 카테고리의 다른 글
[프로그래머스 SQL] 상품을 구매한 회원 비율 구하기 / 오라클 (Oracle) (0) | 2022.10.27 |
---|---|
[프로그래머스 SQL] 그룹별 조건에 맞는 식당 목록 출력하기 / 오라클(Oracle) (0) | 2022.10.25 |
[프로그래머스 SQL] 진료과별 총 예약 횟수 출력하기 / 오라클(Oracle) (0) | 2022.10.25 |
[프로그래머스 SQL] 오프라인/온라인 판매 데이터 통합하기 / 오라클(Oracle) (0) | 2022.10.20 |
[프로그래머스 SQL] 년, 월, 성별 별 상품 구매 회원 수 구하기 / 오라클(Oracle) (0) | 2022.10.20 |