문제 설명
다음은 종합병원에 속한 의사 정보를 담은
DOCTOR
테이블입니다. DOCTOR
테이블은 다음과 같으며 DR_NAME
, DR_ID
, LCNS_NO
, HIRE_YMD
, MCDP_CD
, TLNO
는 각각 의사이름, 의사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
테이블이 다음과 같을 때
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;


풀이
- date()를 사용하면 시간값을 제거 할 수 있을거라 생각함.
SELECT
DR_NAME,
DR_ID,
MCDP_CD,
DATE(HIRE_YMD)
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS';
- ❌ DATE()을 사용. 시간값은 나오지 않을 것이라 생각함. 시간값도 표기되어 실패

- 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()을 사용해 직접 포맷팅 함.
- ❌ 정렬도 해야 함

- 정렬을 하며 마무리
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;
- ✅ 정렬하고 이름도 바꿔줌

Share article