📌 문제 정보
- 문제 이름 : 프로그래머스 - (SELECT) 흉부외과 or 일반외과 의사 목록 출력하기
- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/132203
📌 문제 요약
- DOCTOR 테이블 : DR_NAME(의사이름), DR_ID(의사ID), LCNS_NO(면허번호), HIRE_YMD(고용일자), MCDP_CD(진료과코드), TLNO(전화번호)
- DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬
예시) DOCTOR 테이블이 다음과 같을 때
| DR_NAME | DR_ID | LCNS_NO | HIRE_YMD | MCDP_CD | TLNO |
| 루피 | DR20090029 | LC00010001 | 2009-03-01 | CS | 01085482011 |
| 패티 | DR20090001 | LC00010901 | 2009-07-01 | CS | 01085220122 |
| 뽀로로 | DR20170123 | LC00091201 | 2017-03-01 | GS | 01034969210 |
| 티거 | DR20100011 | LC00011201 | 2010-03-01 | NP | 01034229818 |
| 품바 | DR20090231 | LC00011302 | 2015-11-01 | OS | 01049840278 |
| 티몬 | DR20090112 | LC00011162 | 2010-03-01 | FM | 01094622190 |
| 니모 | DR20200012 | LC00911162 | 2020-03-01 | CS | 01089483921 |
| 오로라 | DR20100031 | LC00010327 | 2010-11-01 | OS | 01098428957 |
| 자스민 | DR20100032 | LC00010192 | 2010-03-01 | GS | 01023981922 |
| 벨 | DR20100039 | LC00010562 | 2010-07-01 | GS | 01058390758 |
출력)
| DR_NAME | DR_ID | MCDP_CD | HIRE_YMD |
| 니모 | DR20200012 | CS | 2020-03-01 |
| 뽀로로 | DR20170123 | GS | 2017-03-01 |
| 벨 | DR20100039 | GS | 2010-07-01 |
| 자스민 | DR20100032 | GS | 2010-03-01 |
| 패티 | DR20090001 | CS | 2009-07-01 |
| 루피 | DR20090029 | CS | 2009-03-01 |
📌 내 풀이 및 코드
#의사의 이름, 의사ID, 진료과, 고용일자를 조회
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD
FROM DOCTOR # DOCTOR 테이블에서
WHERE MCDP_CD IN ('CS', 'GS') # 의사 이름이 흉부외과(CS)이거나 일반외과(GS)인
ORDER BY HIRE_YMD DESC, DR_NAME ASC; # 고용일자를 기준 내림차순 정렬, 고용일자가 같다면 이름 기준 오름차순
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
** IN 연산 **
- 해당 열의 값이 지정된 여러 값 중 하나와 일치하는지를 확인할 때, 조건절에 사용
컬럼명 IN (값1, 값2, 값3, ...)
## 예시
WHERE MCDP_CD IN ('CS', 'GS')
## 동일 조건을 OR로 쓰면?
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
** DATE_FORMAT **
- 날짜값을 원하는 형식의 문자열로 바꿔주는 함수로 MySQL에서 주로 사용됨.
DATE_FORMAT(날짜컬럼, '형식')
## 예시
DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD
| 형식 | 코드 의미 | 예시 |
| %Y | 연도 (4자리) | 2025 |
| %y | 연도 (2자리) | 25 |
| %m | 월 (2자리) | 07 |
| %d | 일 (2자리) | 15 |
'CODING TEST > MySQL' 카테고리의 다른 글
| Lv1 - 평균 일일 대여 요금 구하기 (0) | 2025.07.16 |
|---|---|
| Lv1 - 잡은 물고기 중 가장 큰 물고기의 길이 구하기 (0) | 2025.07.16 |
| Lv1 - 조건에 맞는 도서 리스트 출력하기 (0) | 2025.07.16 |
| Lv1 - 12세 이하인 여자 환자 목록 출력하기 (0) | 2025.07.16 |
| Lv1 - 조건에 맞는 회원수 구하기 (0) | 2025.07.15 |
