[ Programmers ] Lv1. 흉부외과 또는 일반외과 의사 목록 출력하기 (MySQL)

ma.caron_g·2022년 11월 8일
0

MySQL Algorithm

목록 보기
17/20
post-thumbnail

1. Problem 📃

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

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


[ 문제 설명 ]

다음은 종합병원에 속한 의사 정보를 담은DOCTOR 테이블입니다. DOCTOR 테이블은 다음과 같으며 DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO는 각각 의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호를 나타냅니다.

Column nameTypeNullable
DR_NAMEVARCHAR(20)FALSE
DR_IDVARCHAR(10)FALSE
LCNS_NOVARCHAR(30)FALSE
HIRE_YMDDATEFALSE
MCDP_CDVARCHAR(6)TRUE
TLNOVARCHAR(50)TRUE

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


2. Example 📚

[ 입출력 예시 ]

DOCTOR 테이블이 다음과 같을 때

DR_NAMEDR_IDLCNS_NOHIRE_YMDMCDP_CD TLNO
루피DR20090029LC000100012009-03-01CS
패티DR20090001LC000109012009-07-01CS 01085220122
뽀로로DR20170123LC000912012017-03-01GS
티거DR20100011LC000112012010-03-01NP
품바DR20090231LC000113022015-11-01OS
티몬DR20090112LC000111622010-03-01FM
니모DR20200012LC009111622020-03-01CS
오로라DR20100031LC000103272010-11-01OS
자스민DR20100032LC000101922010-03-01GS
DR20100039LC000105622010-07-01GS

SQL을 실행하면 다음과 같이 출력되어야 합니다.

DR_NAMEDR_IDMCDP_CDHIRE_YMD
니모DR20200012CS2020-03-01
뽀로로DR20170123GS2017-03-01
DR20100039GS2010-07-01
자스민DR20100032GS2010-03-01
패티DR20090001CS2009-07-01
루피DR20090029CS2009-03-01

<주의사항>
날짜 포맷은 예시와 동일하게 나와야합니다.


3. Solution 🔑

  1. 의사의 이름(DR_NAME), 의사ID(DR_ID), 진료과(MCDP_CD), 고용일자(HIRE_YMD)를 조회
    • SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD
  2. 해당 테이블에서 (FROM [테이블명])
    • FROM DOCTOR
  3. 진료과(MCDP_CD)가 흉부외과(CS)이거나 일반외과(GS)인 곳
    • WHERE MCDP_CD ='GS' OR MCDP_CD = 'CS'
  4. 고용일자(HIRE_YMD)를 기준으로 내림차순 정렬, 같다면 이름(DR_NAME)을 기준으로 오름차순 정렬
    • ORDER BY HIRE_YMD DESC

4. Code 💻

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

5. Growth 🍄

  • DATE_FORMAT([DATE 필드명], 출력 형태(포맷)) : DATE필드는 기본적으로 시, 분, 초까지 기록돼 있는데 이를 DATE_FORMAT을 이용해서 출력하고자 하는 포맷을 지정할 수 있습니다.
profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글