개발 일지/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으로 묶어주는 것도 가능하다.