반응형
※ 문제
※ 코드
SELECT HOUR(DATETIME) HOUR, COUNT(ANIMAL_ID) COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR BETWEEN 9 AND 19
ORDER BY HOUR;
※ 풀이
이번 코드는 MySQL의 특이한 특징이 한가지 보입니다.
원래 SQL의 구문 순서는 다음과 같습니다.
FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY
그렇기 때문에 SELECT 절에서 선언된 ALIAS(AS)는 ORDER BY 절에서만 사용이 가능합니다.
그런데 위 문제를 보면 HAVING 절에서 SELECT 절의 별칭을 가져다 쓰고 있는 모습을 볼 수 있습니다.
왜냐하면 MySQL만의 특별한 유연성 덕분에 GROUP BY, HAVING, ORDER BY 3개의 절에서 모두 SELECT의 ALIAS를 쓸 수 있도록 만들어져 있어서 그렇습니다.
아무튼 이를 잘 활용하여 위와 같이 풀어주면 되겠습니다~
(만약 ORACLE이라면 그냥 별칭 없이 시간을 구하는 함수를 그대로 또 써주면 되겠습니다!)
반응형
'DBMS' 카테고리의 다른 글
[프로그래머스 SQL] Lv. 2 3월에 태어난 여성 회원 목록 출력하기 (0) | 2025.06.10 |
---|---|
[프로그래머스 SQL] Lv. 2 조건에 맞는 도서와 저자 리스트 출력하기 (5) | 2025.06.09 |
[프로그래머스 SQL] Lv. 2 고양이와 개는 몇 마리 있을까 (0) | 2025.06.09 |
[프로그래머스 SQL] Lv. 2 진료과별 총 예약 횟수 출력하기 (0) | 2025.06.09 |
[프로그래머스 SQL] Lv. 2 중성화 여부 파악하기 (0) | 2025.06.08 |