OkBublewrap

진료과별 총 예약횟수 출력하기 본문

개발/SQL

진료과별 총 예약횟수 출력하기

옥뽁뽁 2023. 2. 25. 10:55

문제

APPOINMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요.

이때, 컬럼명은 '진료과 코드', 5월 예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 

정렬하고, 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순

정렬해주세요.

 

예시

SQL을 실행하면 다음과 같이 출력되어야 합니다.

진료과코드 5월예약건수
OB 1
OS 1
CS 2
FM 2
GS 2
SELECT mcdp_cd as '진료과코드', count(*) as '5월예약건수'
FROM appointment
WHERE apnt_ymd LIKE '2022-05%'
GROUP BY mcdp_cd
ORDER BY '5월예약건수' ASC, '진료과코드' ASC
진료과코드 5월예약건수
GS 2
FM 2

제출한 결과 정답이 아니라고 한다

 

문의하기를 다른 분이 작성한 것을 보니 열 별칭의 문제라고 했다

https://dev.mysql.com/doc/refman/8.0/en/problems-with-alias.html

 

MySQL :: MySQL 8.0 Reference Manual :: B.3.4.4 Problems with Column Aliases

B.3.4.4 Problems with Column Aliases An alias can be used in a query select list to give a column a different name. You can use the alias in GROUP BY, ORDER BY, or HAVING clauses to refer to the column: SELECT SQRT(a*b) AS root FROM tbl_name GROUP BY root

dev.mysql.com

<예시>

SELECT SQRT(a*b) AS root FROM tbl_name
  GROUP BY root HAVING root > 0;
SELECT id, COUNT(*) AS cnt FROM tbl_name
  GROUP BY id HAVING cnt > 0;
SELECT id AS 'Customer identity' FROM tbl_name;

별칭을 지정한 것은 GROUP BY절, HAVING절을 참조할 수 있다.

SELECT id, COUNT(*) AS cnt FROM tbl_name
  WHERE cnt > 0 GROUP BY id;

WHERE절에는 별칭을 사용하지 못한다고 명시가 되어있다. 

 

SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
  GROUP BY `a`;

따라서 별칭을 지정한것은 ``을 사용해서 넣어 줘야한다.

 

SELECT mcdp_cd as '진료과코드', count(*) as '5월예약건수'
FROM appointment
WHERE apnt_ymd LIKE '2022-05%'
GROUP BY mcdp_cd
ORDER BY `5월예약건수` ASC, `진료과코드` ASC

'개발 > SQL' 카테고리의 다른 글

흉부외과 또는 일반외과 의사 목록 출력하기  (0) 2023.02.25
Null 처리하기  (0) 2023.02.25
Weather Observation Station 11  (0) 2023.02.22
Weather Observation Station 10  (0) 2023.02.22
Weather Observation Station 9  (0) 2023.02.22