[SQL] 프로그래머스- 흉부외과 또는 일반외과 의사 목록 출력하기

민정·2023년 7월 9일
0

코딩테스트

목록 보기
2/5

[SQL/Programmers]

문제:
DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림
차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.

확인해야할 조건
1. 진료과가 CS OR GS 인 데이터만 추출
2. 추출할 컬럼은 DR_NAME, DR_ID, HIRE_YMD, MCDP_CD
3. 고용일자를 기준으로 내림차순, 이름을 기준으로 오름차순 정렬
4. 고용일자 date time 출력 형식은 '년-월-일' 이여야 함

코드

-- 코드를 입력하세요
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD,'%Y-%m-%d') FROM DOCTOR 
WHERE MCDP_CD LIKE 'GS' OR MCDP_CD LIKE 'CS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC;

출력 결과

기록


  1. 다중정렬
    고용일자를 기준으로 내림차순, 고용일자가 같다면 이름을 기준으로 오름차순 정렬을 해야하므오 ORDER BY 고용일자 DESC, 이름 ASC 형식으로 써주어야 함
  2. DATE TIME 포맷
    처음에 DATE TIME 형식을 변경해주지 않고 그대로 사용하여 틀렸다.
    SQL 에서 날짜 변환시 DATE_FORMAT 함수를 사용하여 날짜를 지정한 포맷으로 변경할 수 있다!

⬜️ DATE_FORMAT 사용 방법
:날짜 포맷을 변경해주는 함수

DATE_FORMAT(date,format)

첫번째 인수인 date 에는 포맷을 변경하고 싶은 값을 지정한다.
두번째 인수인 format에는 변경하고 싶은 날짜 타입을 입력한다.
따라서 위의 예시에서는 년-월-일 형식의 데이터 포맷을 출력해야 했기에 DATE_FORMAT(날짜,'%Y-%m-%d') 를 이용하여 변경해주었다.

포맷 형태는 보통 정해져 있다
%Y : 연 ( 4자리 연도 )
%y : 연 ( 2자리 연도 )
%m : 월 ( 2자리 )
%c : 월 (1자리, 10보다 작을 경우)
%M : 월 (이름 <january,Febuary...>)
%b : 월 (줄인 이름 <jan,Feb...>)
%d : 일 (2자리)
%e : 일 (1자리, 10보다 작을 경우)

profile
공부 기록장

0개의 댓글