본문 바로가기
DBMS

[프로그래머스 SQL] Lv. 2 입양 시각 구하기(1)

by floral1215 2025. 6. 9.
반응형

※ 문제

 

※ 코드

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이라면 그냥 별칭 없이 시간을 구하는 함수를 그대로 또 써주면 되겠습니다!)

반응형