[MySQL] 진료과별 총 예약 횟수 출력하기 - GROUP BY

Saemi Min·2023년 2월 17일
0

MySQL

목록 보기
8/21
post-thumbnail

문제

해당 문제 링크

정답

SELECT MCDP_CD AS '진료과코드', COUNT(MCDP_CD) AS '5월예약건수'  FROM APPOINTMENT 
WHERE APNT_YMD LIKE '2022-05%'
GROUP BY MCDP_CD
ORDER BY COUNT(MCDP_CD) ASC, MCDP_CD ASC;

풀이

문제를 보고 어떻게 작성해야할지 파헤쳐 보자!

  • APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요.
    = 2022년 5월 예약 환자수를 조회해야 한다! => 조건을 LIKE "2022-05%"를 작성해야겠다!
    = 예약한 환자 수를 진료과 코드별로 조회 => GROUP BY 진료과코드로 그룹화해야겠다.

  • 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.
    = 컬럼명은 AS 로 바꿔야겠다.
    = 정렬 오름차순이면, ORDER BY로 ASC사용해야겠다


문법

그룹화하여 데이터 조회(GROUP BY)

  • 특정 컬럼을 그룹화 하는 GROUP BY
  • 특정 컬럼을 그룹화한 결과에 조건을 거는 HAVING
  • WHERE랑 HAVING을 헷깔리는 경우가 많은데 WHERE는 그룹화 하기 전이고, HAVING은 그룹화 후에 조건입니다.
  1. 컬럼 그룹화
SELECT 컬럼 FROM 테이블 GROUP BY 그룹화할 컬럼;
  1. 조건 처리 후에 컬럼 그룹화
SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할 컬럼;
  1. 컬럼 그룹화 후에 조건 처리
SELECT 컬럼 FROM 테이블 GROUP BY 그룹화할 컬럼 HAVING 조건식;
  1. 조건 처리 후에 컬럼 그룹화 후에 조건 처리
SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할 컬럼 HAVING 조건식;
  1. ORDER BY가 존재하는 경우
SELECT 컬럼 FROM 테이블 [WHERE 조건식]
GROUP BY 그룹화할 컬럼 [HAVING 조건식] ORDER BY 컬럼1 [, 컬럼2, 컬럼3 ...];
profile
I believe in myself.

0개의 댓글