코딩테스트 - 프로그래머스/SQL
[SQL] 진료과별 총 예약 횟수 출력하기
Namani
2023. 11. 20. 21:26
https://school.programmers.co.kr/learn/courses/30/lessons/131697
SELECT MCDP_CD AS '진료과코드', COUNT(PT_NO) AS '5월예약건수'
FROM APPOINTMENT
WHERE APNT_YMD LIKE '2022-05%'
GROUP BY MCDP_CD
ORDER BY 5월예약건수, 진료과코드
찾아야 하는 값
- 2022년 5월에 예약
- 환자 수
조회 할 테이블: APPOINTMENT
조건
- 컬럼명을 '진료과코드', '5월예약건수'로 지정
- 진료과별 예약한 환자수를 기준으로 오름차순 정렬
- 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬
풀이
1. 컬럼명을 '진료과코드', '5월예약건수'로 지정 (SELECT, FROM 절)
SELECT MCDP_CD AS '진료과코드', COUNT(PT_NO) AS '5월예약건수'
FROM APPOINTMENT
- AS 별칭 으로 사용하면 됨
- 별칭에 띄어쓰기가 있다면 따옴표 사용해야 함
2. 2022년 5월에 예약 (WHERE 절)
SELECT MCDP_CD AS '진료과코드', COUNT(PT_NO) AS '5월예약건수'
FROM APPOINTMENT
WHERE APNT_NO LIKE '2022-05%'
- LIKE 절 사용
- 데이터 끝에 %를 사용하면 2022-05로 시작하는 문자가 있는 ROW 출력
3. 진료과별 예약한 환자 수 구하기
SELECT MCDP_CD AS '진료과코드', COUNT(PT_NO) AS '5월예약건수'
GROUP BY MCDP_CD
- GROUP BY와 집계 함수인 COUNT를 통해 진료과별 예약한 환자 수를 구함
- 진료과 코드(MCDP_CD)를 기준으로 환자 번호(PT_NO)의 개수를 세어 5월 예약건수를 구함
3. 진료과별 예약한 환자 수를 기준으로 오름차순 + 진료과 코드를 기준으로 오름차순 정렬
ORDER BY 5월예약건수, 진료과코드
- ORDER BY를 통해 오름차순 정렬 (DESC를 따로 명시하지 않을 경우, Default 값은 ASC (오름차순))
- GROUP BY, ORDER BY, HAVING 절에 별칭을 사용할 경우, 별칭 그대로 사용하거나 '별칭'과 같이 억음부호인 ` ` (Backtick)을 사용해야 함