개발 일지/SQL_ORACLE
[프로그래머스] 흉부외과 또는 일반외과 의사 목록 출력하기_ORACLE
박빙수_
2024. 9. 24. 23:11
프로그래머스 Lv.1 흉부외과 또는 일반외과 의사 목록 출력하기
문제:
DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.
Point:
DATE_FORMAT과 OR을 사용해야한다.
*참고
- %Y : 4자리 연도 (2024)
- %y : 2자리 연도 (24)
- %M : 영문 월(September)
- %m : 2자리 월 (09)
- %D : 영문 일(1st)
- %d : 2자리 일 (30)
- %H : 24시간 형식 (00-23)
- %i : 분 (00-59)
- %s : 초 (00-59)
1) 첫시도
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d')
FROM DOCTOR
WHERE MCDP_CD = "CS"
ORDER BY 4 desc, 1
UNION
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d')
FROM DOCTOR
WHERE MCDP_CD = "GS"
ORDER BY 4 desc, 1
처음엔 이렇게 UNION으로 접근했다. 그런데 ORDER BY 절이 들어가면서 오류가 났다.
2) 두번째 시도
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') MCDP_CD
FROM DOCTOR
WHERE MCDP_CD = "CS" or MCDP_CD = "GS"
ORDER BY 4 desc, 1
OR로 묶어주니 해결!
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') MCDP_CD
FROM DOCTOR
WHERE MCDP_CD in ("CS","GS")
ORDER BY 4 desc, 1
in으로 묶어주는 것도 가능하다.