loading

새소식

CodingTest/Programmers

[프로그래머스/Lv4️⃣] 취소되지 않은 진료 예약 조회하기 (문제 해설 및 풀이)

  • -
728x90
반응형

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

 

 

 

 

 

 

📝  문제 설명

 

다음은 환자 정보를 담은 PATIENT 테이블과 의사 정보를 담은 DOCTOR 테이블, 그리고 진료 예약목록을 담은 APPOINTMENT에 대한 테이블입니다. PATIENT 테이블은 다음과 같으며 PT_NO, PT_NAME, GEND_CD, AGE, TLNO는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다.

DOCTOR 테이블은 다음과 같으며 DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO는 각각 의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호를 나타냅니다.

APPOINTMENT 테이블은 다음과 같으며 APNT_YMD, APNT_NO, PT_NO, MCDP_CD, MDDR_ID, APNT_CNCL_YN, APNT_CNCL_YMD는 각각 진료 예약일시, 진료예약번호, 환자번호, 진료과코드, 의사ID, 예약취소여부, 예약취소날짜를 나타냅니다.

 

PATIENT

 

DOCTOR

 

APPOINTMENT

 

 

 

🔖 예시

 

PATIENT

 

DOCTOR

 

APPOINTMENT



 

 

❓ 문제

 

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

 

 

 

🎯 풀이 

 

1. MySQL

 

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

 

⭐ DATE_FORMAT() 사용

⭐ FROM 절에 한번에 적어 INNER JOIN 해도 되고 명시적으로 INNER JOIN ~ ON ~ 으로 작성해도 된다.

 

 

 

 

 

2. Oracle

 

SELECT APNT_NO, PT_NAME, A.PT_NO, A.MCDP_CD, DR_NAME, APNT_YMD
FROM PATIENT P, DOCTOR D, APPOINTMENT A
WHERE P.PT_NO = A.PT_NO AND D.DR_ID = A.MDDR_ID
AND APNT_CNCL_YN = 'N' AND TO_CHAR(APNT_YMD, 'yyyy-mm-dd') = '2022-04-13'
AND A.MCDP_CD = 'CS'
ORDER BY APNT_YMD;

 

⭐ TO_CHAR() 사용

 

 

 

 

 

 

 

 

💡 출력 결과

 



 

 

 

 

 

 


 

 

 

728x90
반응형
Contents

📝 포스팅 주소를 복사했습니다 📝

이 글이 도움이 되었다면 공감 부탁드립니다👍