반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Archives
Today
Total
관리 메뉴

욱꾸미의 주꾸미 발

[코딩테스트] 프로그래머스 - 취소되지 않은 진료 예약 조회하기(MySQL, Level4) 본문

코딩테스트/프로그래머스

[코딩테스트] 프로그래머스 - 취소되지 않은 진료 예약 조회하기(MySQL, Level4)

욱꾸미 2022. 12. 16. 02:10
반응형

안녕하세요.

오늘은 글을 올리는 시간이 조금 늦었네요~

 

요즘은 찾아보지를 않으면 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

반응형