❓문제
다음은 종합병원에 속한 의사 정보를 담은DOCTOR 테이블입니다. DOCTOR 테이블은 다음과 같으며 DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO는 각각 의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호를 나타냅니다.
문제
DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.
예시
DOCTOR 테이블이 다음과 같을 때
SQL을 실행하면 다음과 같이 출력되어야 합니다.
주의사항
날짜 포맷은 예시와 동일하게 나와야합니다.
🤔풀이 방법 고민해보기
DR_NAME, DR_ID, MCDP_CD, HIRE_YMD를 출력 → SELECT
DOCTOR 테이블에서 → FROM
MCDP_CD가 CS이거나 GS인 의사 → WHERE
고용일자를 기준으로 내림차순 → ORDER BY DESC
고용일자가 같다면 이름을 기준으로 오름차순 → ASC
👩🏻💻나의 코드
1차시도
SELECT DR_NAME, DR_ID, MCDP_CD, HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD = 'GS' OR MCDP_CD = 'CS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC;
틀렸다. 이유를 생각해보니 HIRE_YMD의 형식이 DATETIME이어서 그런 듯 하다.
그래서 문제에서도 따로 주의사항을 적어줬나보다
2차 시도
SELECT DR_NAME, DR_ID, MCDP_CD, CAST(HIRE_YMD AS DATE) AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD = 'GS' OR MCDP_CD = 'CS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC;
✅다른 사람 코드
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, DR_NAME ASC;
- DATE_FORMAT()
- 날짜 형식을 지정하여 날짜를 문자열로 변환하는데 사용되는 함수
- 날짜 데이터를 원하는 형식으로 표현할 수 있다
- 기본 문법: DATE_FORMAT(date, format)
- date: 날짜 또는 날짜/시간 값
- format: 날짜를 출력할 형식을 지정하는 문자열
- format 매개변수에는 특정한 서식 지정자를 사용하여 날짜를 원하는 형식으로 변환할 수 있다
- '%Y': 연도
- '%m': 월
- '%d': 일
SELECT DR_NAME, DR_ID, MCDP_CD, CAST(HIRE_YMD AS DATE) AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD IN ('CS', 'GS')
ORDER BY HIRE_YMD DESC, DR_NAME ASC;
- IN
- 조건절
- 특정 열의 값이 주어진 값들 중 하나와 일치하는지를 검사
- 일반적으로 WHERE절에 사용된다
- 여러 개의 가능한 값을 지정할 때 유용하다
- OR 연산을 사용하는 것 보다 간결하게 표현할 수 있어 가독성이 좋다
출처: https://school.programmers.co.kr/learn/courses/30/lessons/132203
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'MySQL > 프로그래머스' 카테고리의 다른 글
[프로그래머스 lv.1] 인기있는 아이스크림 (0) | 2023.11.22 |
---|---|
[프로그래머스 lv.1] 12세 이하인 여자 환자 목록 출력하기 (0) | 2023.11.15 |
[프로그래머스 LV.1] 가장 비싼 상품 구하기 (1) | 2023.11.01 |
[프로그래머스] 조건에 맞는 회원수 구하기 (0) | 2023.10.25 |
[프로그래머스] 나이 정보가 없는 회원 수 구하기 (0) | 2023.10.24 |