https://school.programmers.co.kr/learn/courses/30/lessons/132202
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드설명
DATE_FORMAT + GROUP BY + COUNT를 활용합니다.
문제에서 특이점은, 한국말로 ALIAS 를 설정할 경우 따음표나 쌍따음표가 아닌
백틱( ` )을 사용해야한다는 점입니다.
코드
SELECT MCDP_CD AS `진료과코드`, COUNT(*) AS `5월예약건수` FROM APPOINTMENT WHERE DATE_FORMAT(APNT_YMD, '%Y-%m') = "2022-05" GROUP BY `진료과코드` ORDER BY `5월예약건수` ASC, `진료과코드` ASC;
-- WHERE 절은 데이터베이스에 이미 존재하는 필드를 기준으로 한다. -- 항상 -- FROM -- WHERE -- GROUP BY -- HAVING -- select -- ORDER BY 순서대로 작성한다. -- HAVING 절은 집계를 통해 생성한 결과를 기준으로 한다. SELECT MCDP_CD AS '진료과코드', COUNT(*) AS '5월예약건수' FROM APPOINTMENT WHERE DATE_FORMAT(APNT_YMD, '%Y-%m') = '2022-05' GROUP BY MCDP_CD -- HAVING DATE_FORMAT(APNT_YMD, '%Y-%m') = '2022-05' 이건 불가합니다. HAVING절은 집계를 통해 생성한 결과를 기준으로 하기 떄문. ORDER BY COUNT(*) ASC, MCDP_CD ASC
ORACLE
SELECT A.MCDP_CD AS "진료과코드", COUNT(*) AS "5월예약건수" FROM APPOINTMENT A WHERE TO_CHAR(A.APNT_YMD, 'YYYY-MM') = '2022-05' GROUP BY A.MCDP_CD ORDER BY "5월예약건수", "진료과코드"