Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- alias
- 금융IT
- 금융 플랫폼
- 서브쿼리
- LIMIT
- 도서추천
- Python
- join
- count
- 해외결제
- 날짜 포맷
- ifnull
- MySQL
- where
- IELTS
- MAX
- is null
- SubQuery
- date_format
- GROUP BY
- 트래블테크
- SQL
- IN
- having
- order by
- IS NOT NULL
- inner join
- programmers
- 투자자산운용사
- Round
Archives
- Today
- Total
Every Step Matters
[프로그래머스 SQL Lv.2] 진료과별 총 예약 횟수 출력하기 (MySQL) 본문
문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/132202
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
1. 테이블 : APPOINTMENT
| Column name | Type | Nullable | Description |
| APNT_YMD | TIMESTAMP | FALSE | 진료예약일시 |
| APNT_NO | NUMBER(5) | FALSE | 진료예약번호 |
| PT_NO | VARCHAR(10) | FALSE | 환자번호 |
| MCDP_CD | VARCHAR(6) | FALSE | 진료과코드 |
| MDDR_ID | VARCHAR(10) | FALSE | 의사ID |
| APNT_CNCL_YN | VARCHAR(1) | TRUE | 예약취소여부 |
| APNT_CNCL_YMD | DATE | TRUE | 예약취소날짜 |
2. 문제
APPOINTMENT 테이블에서 (1) 2022년 5월에 예약한 환자 수를 (2) 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, (3) 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 (4) 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, (5) 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.
3. 문제풀이
(1) 2022년 5월 예약 환자 수를 (2) 진료과코드 별로 조회
먼저 진료과코드 별 환자 수를 구하기 위해 GROUP BY 함수를 이용하여 진료과코드 별로 그룹화하고, 그 뒤 집계함수인 COUNT를 활용한다.
이때 2022년 5월 예약 환자 수만을 조회하고 싶으므로 WHERE절로 조건을 설정해주고, SELECT 절에서 컬럼명의 별칭을 문제에서 지정한 대로 설정해준다.
SELECT MCDP_CD 진료과코드, count(*) 5월예약건수 -- (3) 별칭 설정
FROM appointment
WHERE APNT_YMD >= '2022-05-01' -- (1) 2022년 5월 예약은 5월 1일부터 31일까지
AND APNT_YMD <= '2022-05-31'
GROUP BY MCDP_CD -- (2) 진료과코드 별로 그룹화
GROUP BY 원칙 : SELECT 절에 집계 함수와 함께 사용되지 않은 컬럼은 GROUP BY 절에 모두 지정되어야 한다.
(4) 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, (5) 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬
ORDER BY 5월예약건수, 진료과코드 -- select 뒤에 실행되므로 별칭 사용 가능
쿼리문에 대한 시스템 내부적인 실행 순서에 대한 설명은 해당 글 참고
4. 정답
따라서 정답은
SELECT MCDP_CD 진료과코드, count(*) 5월예약건수
FROM appointment
WHERE APNT_YMD >= '2022-05-01'
AND APNT_YMD <= '2022-05-31'
GROUP BY MCDP_CD
ORDER BY 5월예약건수, 진료과코드'Database > SQL' 카테고리의 다른 글
| [프로그래머스 SQL Lv.2] ROOT 아이템 구하기 (MySQL) (0) | 2026.01.05 |
|---|---|
| [프로그래머스 SQL Lv.3] 물고기 종류 별 대어 찾기 (MySQL) (0) | 2026.01.05 |
| [프로그래머스 SQL Lv.2] 조건에 맞는 도서와 저자 리스트 출력하기 (MySQL) (0) | 2026.01.04 |
| [MySQL] MySQL 현재 날짜 및 시간 출력 방법 (0) | 2026.01.03 |
| [SQL] SQL SELECT 쿼리 작성 순서와 실행 순서 정리 (0) | 2026.01.03 |