MySQL (3) - 흉부외과 또는 일반외과 의사 목록 출력하기

HoDu PyTHON·2023년 1월 6일
0

MySQL

목록 보기
3/5
post-thumbnail

흉부외과 또는 일반외과 의사 목록 출력하기

문제는 여기에서 풀수 있습니다!


  • 문제설명

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

(+) 여기서 '날짜 포맷은 예시와 동일하게 나와야합니다.'라는 조건이 문제 제일 아래에 있는데 예시는 2020-03-01처럼 년월일만 출력이 된다.

  • 문제 답안
SELECT 
	DR_NAME, 
    DR_ID, 
    MCDP_CD, 
    SUBSTRING_INDEX(HIRE_YMD, ' ', 1)
FROM DOCTOR
WHERE MCDP_CD IN ('CS', 'GS')
ORDER BY HIRE_YMD DESC, DR_NAME 

SELECT를 통해 이름, ID, 진료과 코드, 고용일자를 표시한다.
하지만 그냥 고용일자를 표시하면 예시와 다르게 뒤에 시간이 표시된다. 이를 제거하기 위해 SUBSTRING_INDEX()를 사용하였다.

SUBSTRING_INDEX는 문자열에서 구분자 (delim)을 기준으로 구분자가 count만큼 나오기 전에 끊어주는 역할을 한다.

기본형태는 다음과 같다.

SUBSTRING_INDEX(str,delim,count)

따라서 나는 SUBSTRING_INDEX(HIRE_YMD, ' ', 1)를 통해 처음으로 공백 (' ')이 나올때 문자열을 잘라서 출력하는 방식으로 풀었다.

하지만, 본 예시와 비슷하게 정형화된 포맷이 있는 경우는 left, substring, right를 이용해 문자열을 원하는 수만큼 잘라내는 것이 가능하다.

따라서 LEFT(str, cnt)를 이용한다면 다음과 같은 풀이도 가능한 것이다!

SELECT 
    DR_NAME, DR_ID, MCDP_CD, 
    LEFT(HIRE_YMD, 10)
FROM DOCTOR
WHERE MCDP_CD IN ('CS', 'GS')
ORDER BY HIRE_YMD DESC, DR_NAME

목적에 맞게, 취향껏! 사용하자 ㅋ.ㅋ

profile
나는야 척척'박사' & ML/DL & Coffee

0개의 댓글