MySQL

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

고고잉93 2023. 11. 8. 20:42
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/132203#qna

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

 오름차순 정렬해주세요.

 


나의 풀이

SELECT DR_NAME, DR_ID, MCDP_CD, HIRE_YMD('%Y-%m-%d')
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC

 

WHERE 절을 사용하여 CS,GS의사들을 불렀고 ORDER BY 로 정렬하였다...

하지만 HIRE_YMD에서 시간을 제외하고 표현을 해야하는데 방법을 알지 못함. 





 



풀이.

SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD,'%Y-%m-%d')
  FROM DOCTOR
  WHERE MCDP_CD IN ('CS', 'GS')
  ORDER BY HIRE_YMD DESC, DR_NAME ASC;

 

DATE_FORMAT - 시간/날짜를 지정한 형식으로 반환하는 함수를 사용하여 HIRE_YMD를 표현하였고

 

WHERE절에서 OR이 아니라 IN함수를 사용하여 표현하였다.

OR을 사용하던 IN을 사용하던 같은것 같다. 하지만 IN함수를 사용하는것이 더 보기편한것 같다.

728x90