[프로그래머스] (MySQL) 1. 흉부외과 또는 일반외과 의사 목록 출력하기

최재원's avatar
Mar 03, 2025
[프로그래머스] (MySQL) 1. 흉부외과 또는 일반외과 의사 목록 출력하기
💡

문제 설명

다음은 종합병원에 속한 의사 정보를 담은DOCTOR 테이블입니다. DOCTOR 테이블은 다음과 같으며 DR_NAMEDR_IDLCNS_NOHIRE_YMDMCDP_CDTLNO는 각각 의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호를 나타냅니다.
Column name
Type
Nullable
DR_NAME
VARCHAR(20)
FALSE
DR_ID
VARCHAR(10)
FALSE
LCNS_NO
VARCHAR(30)
FALSE
HIRE_YMD
DATE
FALSE
MCDP_CD
VARCHAR(6)
TRUE
TLNO
VARCHAR(50)
TRUE
💡

문제

DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.
예시
  • DOCTOR 테이블이 다음과 같을 때
DR_NAME
DR_ID
LCNS_NO
HIRE_YMD
MCDP_CD
TLNO
루피
DR20090029
LC00010001
2009-03-01
CS
01085482011
패티
DR20090001
LC00010901
2009-07-01
CS
01085220122
뽀로로
DR20170123
LC00091201
2017-03-01
GS
01034969210
티거
DR20100011
LC00011201
2010-03-01
NP
01034229818
품바
DR20090231
LC00011302
2015-11-01
OS
01049840278
티몬
DR20090112
LC00011162
2010-03-01
FM
01094622190
니모
DR20200012
LC00911162
2020-03-01
CS
01089483921
오로라
DR20100031
LC00010327
2010-11-01
OS
01098428957
자스민
DR20100032
LC00010192
2010-03-01
GS
01023981922
DR20100039
LC00010562
2010-07-01
GS
01058390758
  • SQL을 실행하면 다음과 같이 출력되어야 합니다.
DR_NAME
DR_ID
MCDP_CD
HIRE_YMD
니모
DR20200012
CS
2020-03-01
뽀로로
DR20170123
GS
2017-03-01
DR20100039
GS
2010-07-01
자스민
DR20100032
GS
2010-03-01
패티
DR20090001
CS
2009-07-01
루피
DR20090029
CS
2009-03-01
주의사항
  • 날짜 포맷은 예시와 동일하게 나와야합니다.

코드

SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') 'HIRE_YMD' FROM DOCTOR WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS' ORDER BY HIRE_YMD DESC, DR_NAME ASC;
notion image
notion image

풀이

  1. date()를 사용하면 시간값을 제거 할 수 있을거라 생각함.
SELECT DR_NAME, DR_ID, MCDP_CD, DATE(HIRE_YMD) FROM DOCTOR WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS';
  • ❌ DATE()을 사용. 시간값은 나오지 않을 것이라 생각함. 시간값도 표기되어 실패
notion image
  1. date()가 실패하여 date_format()을 사용하기로 함
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') 'HIRE_YMD' FROM DOCTOR WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS';
  • DATE_FORMAT()을 사용해 직접 포맷팅 함.
  • ❌ 정렬도 해야 함
notion image
  1. 정렬을 하며 마무리
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') 'HIRE_YMD' FROM DOCTOR WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS' ORDER BY HIRE_YMD DESC, DR_NAME ASC;
  • ✅ 정렬하고 이름도 바꿔줌
notion image
Share article

jjack1