Notice
Recent Posts
Recent Comments
Link
just inside
[프로그래머스] LV 1. 132203 - 흉부외과 또는 일반외과 의사 목록 출력하기 본문
728x90
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/132203
문제 설명
다음은 종합병원에 속한 의사 정보를 담은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 테이블에서 진료과가 흉부외과(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;
풀이
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;
이렇게 하면 결과에서 HIRE_YMD가 DATETIME 형식으로 변환되어 나온다.
MySQL, PostgreSQL 등 일부 데이터베이스 시스템에서는 DATE 형식을 SELECT 로 조회 시, 결과를 표준화하기 위해 자동으로 DATETIME 형식으로 변환할 수 있다.
그러나 문제에서 요구하는 HIRE_YMD의 출력형태는 년월일을 표기하는 DATE 형이다.
따라서 위의 코드로 조회 시 오답처리 되므로, DATE로 형변환을 하여 출력해야 한다.
결과를 고용일자 기준 내림차순 후, 이름 기준 오름차순으로 정렬해준다.
알아둘 사항
- DATE_FORMAT(날짜, 형식) : 날짜를 지정한 형식으로 출력
구분기호 | 역할 | 구분기호 | 역할 |
%Y | 4자리 년도 | %m | 숫자 월 (두자리) |
%y | 2자리 년도 | %c | 숫자 월 (한자리는 한자리) |
%M | 긴 월(영문) | %d | 일자 (두자리) |
%b | 짧은 월(영문) | %e | 일자 (한자리는 한자리) |
%W | 긴 요일 이름(영문) | %I | 시간 (12시간) |
%a | 짧은 요일 이름(영문) | %H | 시간 (24시간) |
%i | 분 | %r | hh:nn:ss AM,PM |
%T | hh:mm:SS | %S | 초 |
728x90
'coding test > SQL' 카테고리의 다른 글
[프로그래머스] LV 1. 151136 - 평균 일일 대여 요금 구하기 (0) | 2024.07.10 |
---|---|
[프로그래머스] LV 1. 133025 - 과일로 만든 아이스크림 고르기 (0) | 2024.07.10 |
[프로그래머스] LV 2. 59410 - NULL 처리하기 (0) | 2024.07.07 |
[프로그래머스] LV 2. 59408 - 중복 제거하기 (0) | 2024.07.07 |
[프로그래머스] LV 2. 59406 - 동물 수 구하기 (0) | 2024.07.07 |