< 링크 >
여기를 클릭하세요 (프로그래머스 고득점 Kit 106문제 모음)
여기를 클릭하세요 (3. 흉부외과 또는 일반외과 의사 목록 출력하기)
< 문제 >
DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.
< 내가 작성한 코드 >
SELECT dr_name, dr_id, mcdp_cd, date_format(hire_ymd, '%Y-%m-%d') as HIRE_YMD
from doctor
where mcdp_cd = 'CS' or mcdp_cd = 'GS'
order by hire_ymd desc, dr_name asc;
< 나의 풀이 >
1. select * from doctor; 를 통해 데이터가 어떻게 생겼는지 살펴보았다.
2. 문제에서 필요로 하는 컬럼은
dr_name, dr_id, mcdp_cd, hire_ymd 4개 컬럼이므로
select dr_name, dr_id, mcdp_cd, hire_ymd
from doctor; 로 쿼리를 수정했다.
3. 문제에 따라 where 조건(흉부외과 이거나 일반외과 : or 사용)을 추가했고,
order by 정렬 방식도 추가했다. 오름차순이 asc 이고 내림차순이 desc 이다.
현재까지 작성한 쿼리는
SELECT dr_name, dr_id, mcdp_cd, hire_ymd
from doctor
where mcdp_cd = 'CS' or mcdp_cd = 'GS'
order by hire_ymd desc, dr_name asc;
4. 그런데 이 상태로 제출하면 틀렸다고 메시지가 뜨는데
그 이유는 hire_ymd 컬럼에서 주어진 데이터 형식과 정답이 원하는 형식이 다르기 때문이다.
따라서 date_format() 함수를 사용해야 한다.
결국 아래 쿼리가 정답이 된다.
SELECT dr_name, dr_id, mcdp_cd, date_format(hire_ymd, '%Y-%m-%d') as HIRE_YMD
from doctor
where mcdp_cd = 'CS' or mcdp_cd = 'GS'
order by hire_ymd desc, dr_name asc;

'IT > 프로그래머스 SQL 문제 풀어보기' 카테고리의 다른 글
| [SQL - SELECT] 5. 인기 있는 아이스크림 (0) | 2026.01.09 |
|---|---|
| [SQL - SELECT] 4. 12세 이하인 여자 환자 목록 출력하기 (0) | 2026.01.09 |
| [SQL - SELECT] 2. 과일로 만든 아이스크림 고르기 (0) | 2026.01.09 |
| [SQL - SELECT] 1. 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2026.01.09 |
| 프로그래머스 SQL 문제 풀어보기 개요 (0) | 2026.01.08 |