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

데프·2023년 10월 31일
0

SQL문제풀이

목록 보기
1/7

👉문제 바로가기
Q. 의사테이블에서 진료과목이 흉부외과(CS)이거나 일반외과(GS)인 의사를 출력하시오.

문제설명

다음에 해당하는 SQL기술을 쓸 수 있는지에 대한 문제

  • 날짜형태 문자열 조작
  • OR을 활용한 기본적인 논리조건 설정
  • 정렬기준 복수 설정

정답

-- Oracle
SELECT DR_NAME, DR_ID, MCDP_CD, TO_CHAR(HIRE_YMD,'yyyy-mm-dd')
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC
-- MySQL
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD,'%Y-%m-%d')
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC

추가설명

  • OR대신 UNION으로 기술하여 작성할 수도 있겠지만 결국 OR조건으로 다시 정렬해야한다.
    • 만약 정렬할 필요가 없다면 각 조건마다 쿼리를 하나씩 작성하고 UNION ALL을 사용하는 것이 성능에 좋다.
  • OR대신 IN으로 작성할 수도 있겠다. 성능면에서는 차이가 없지만 가독성과 유지보수측면에서 IN이 우세하다.
profile
정보의 홍수를 기록하는 데프의 로그

0개의 댓글

관련 채용 정보