https://school.programmers.co.kr/learn/courses/30/lessons/132203
나의 풀이
구해야할것
1.DOCTOR 테이블에서
->FROM DOCTOR
2. 진료과가 흉부외과(CS)이거나 일반외과(GS)인
->WHERE MCDP_CD = "CS" OR MCDP_CD= "GS"
3. 의사의 이름, 의사ID, 진료과, 고용일자를 조회
->SELECT DR_NAME,DR_ID,MCDP_CD,HIRE_YMD
4.고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬
->ORDER BY HIRE_YMD DESC , DR_NAME ASC
5.날짜 포맷은 예시와 동일하게 나와야합니다.
-> date_format(HIRE_YMD,"%Y-%m-%d")
#최종 제출 정답
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
정렬 ORDER BY 컬럼명 DESC(내림차순-큰것부터) ASC(오름차순 - 작은것 부터 ,기본값)
날자포맷 시장하기 date_format(컬럼명 ,원하는 포맷 EX "%Y-%m-%d")
더 많은 포맷은 아래링크 참고
Specifier | Description |
%a | Abbreviated weekday name (Sun..Sat) |
%b | Abbreviated month name (Jan..Dec) |
%c | Month, numeric (0..12) |
%D | Day of the month with English suffix (0th, 1st, 2nd, 3rd, …) |
%d | Day of the month, numeric (00..31) |
%e | Day of the month, numeric (0..31) |
%f | Microseconds (000000..999999) |
%H | Hour (00..23) |
%h | Hour (01..12) |
%I | Hour (01..12) |
%i | Minutes, numeric (00..59) |
%j | Day of year (001..366) |
%k | Hour (0..23) |
%l | Hour (1..12) |
%M | Month name (January..December) |
%m | Month, numeric (00..12) |
%p | AM or PM |
%r | Time, 12-hour (hh:mm:ss followed by AM or PM) |
%S | Seconds (00..59) |
%s | Seconds (00..59) |
%T | Time, 24-hour (hh:mm:ss) |
%U | Week (00..53), where Sunday is the first day of the week; WEEK() mode 0 |
%u | Week (00..53), where Monday is the first day of the week; WEEK() mode 1 |
%V | Week (01..53), where Sunday is the first day of the week; WEEK() mode 2; used with %X |
%v | Week (01..53), where Monday is the first day of the week; WEEK() mode 3; used with %x |
%W | Weekday name (Sunday..Saturday) |
%w | Day of the week (0=Sunday..6=Saturday) |
%X | Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V |
%x | Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v |
%Y | Year, numeric, four digits |
%y | Year, numeric (two digits) |
%% | A literal % character |
%x | x, for any “x” not listed above |
문제 설명
다음은 종합병원에 속한 의사 정보를 담은DOCTOR 테이블입니다. DOCTOR 테이블은 다음과 같으며 DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO는 각각 의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호를 나타냅니다.
Column nameTypeNullableDR_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_NAMEDR_IDLCNS_NOHIRE_YMDMCDP_CDTLNO
루피 | 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_NAMEDR_IDMCDP_CDHIRE_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 |
'문제풀이 > SQL' 카테고리의 다른 글
SELECT_ 인기있는 아이스크림_ SQL (0) | 2023.01.31 |
---|---|
SELECT_ 강원도에 위치한 생산공장 목록 출력하기_ SQL (0) | 2023.01.31 |
SELECT_ 조건에 맞는 도서 리스트 출력하기_ SQL (0) | 2023.01.31 |
SELECT 과일로 만든 아이스크림 고르기-SQL (0) | 2023.01.31 |
SELECT 평균 일일 대여 요금 구하기 -SQL (1) | 2023.01.30 |
댓글