-
[코딩테스트] 프로그래머스 - 취소되지 않은 진료 예약 조회하기(MySQL, Level4)코딩테스트/프로그래머스 2022. 12. 16. 02:10728x90
안녕하세요.
오늘은 글을 올리는 시간이 조금 늦었네요~
요즘은 찾아보지를 않으면 java관련 코딩테스트 문제를 풀지못해 올리지를 못하니 우울합니다.
이번문제는 꽤나 낑낑거리며 풀어 지하철 시간+ 셔틀버스안에서 까지 풀었습니다.
설마 총데이터가 하나만 떨렁 나올줄 몰랐었기에...
문제 만나보시죠~
https://school.programmers.co.kr/learn/courses/30/lessons/132204
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
다음은 제가 작성한 쿼리입니다.
-- 코드를 입력하세요 select patient_appointment.apnt_no, patient_appointment.pt_name, patient_appointment.pt_no, patient_appointment.mcdp_cd, dr.dr_name, patient_appointment.APNT_YMD from doctor as dr join ( SELECT ap.apnt_no as apnt_no, pa.pt_name as pt_name, pa.pt_no as pt_no, ap.mcdp_cd as mcdp_cd, ap.mddr_id as mddr_id, APNT_YMD from appointment as ap join patient as pa on ap.pt_no=pa.pt_no where APNT_YMD like '2022-04-13%' and mcdp_cd='cs' and APNT_CNCL_YN='N' ) as patient_appointment on dr.dr_id=patient_appointment.mddr_id order by patient_appointment.APNT_YMD
좀 너저분 합니다~
기존 문제와는 다르게 이번 문제는 세 개의 테이블을 이용해야했습니다.
그렇기에
① APPOINTMENT Table과 Patient Table을 Joint해 apnt_no, pt_name, pt_no, mcdp_cd, mddr_id, APNT_YMD를 Select했습니다. mddr_id는 추후 DOCTOR Table의 id와 Join시 사용할 예정입니다.
② 그리고 여기에서 바로 필요한 조건을 걸어 데이터를 한번 정리하겠습니다.
- 먼저 날짜 2022년 4월 13일 찾기위해 Like사용
- 취소여부를 찾기위해 APNT_CNCL_YN='N'
- 흉부외과를 찾기위해 mcdp_cp='cs'
와 같은 조건을 걸었습니다.
③ 해당 데이터를 이제 doctor Table과 join하겠습니다. 여기서 우리가 추가로 알아야될 정보는 바로 DOCTOR Table의 Name Data입니다.
④ Join 후 데이터를 select하고 문제에 맞게 정렬 하는 쿼리를 추가해주시면 되겠습니다.
아마 이것도 서브쿼리라고하나요..? 이런 개념이 들어가서 어려웠을수도 있다고 생각합니다.
더군다나 저는 자그마한 폰화면으로 보다보니 더욱 헷갈렸었네요.
오늘은 여기까지 하고 마무리하겠습니다.
감사합니다:D
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[코딩테스트] 프로그래머스 - 조건에 맞는 도서와 저자 리스트 출력하기(MySQL, Level2) (0) 2022.12.22 [코딩테스트] 프로그래머스 - 카테고리 별 도서 판매량 집계하기(MySQL, Level3) (0) 2022.12.21 [코딩테스트] 프로그래머스 - 서울에 위치한 식당 목록 출력하기(MySQL, Level4) (0) 2022.12.14 [코딩테스트] 프로그래머스 - 년, 월, 성별 별 상품 구매 회원 수 구하기(MySQL, Level4) (0) 2022.12.14 [코딩테스트] 프로그래머스 - 불량 사용자(Java, Level3) (1) 2022.12.12