문제

https://programmers.co.kr/learn/courses/30/lessons/59413?language=mysql

풀이

갑자기 안풀려서 답답했던 문제였는데, 알고보니 LEVEL 4 였다더라~
SET을 통해 변수를 설정해야 쉽게 풀 수 있는 문제였다.

SET @hour := -1;
SELECT
    (@hour := @hour+1) as HOUR,
    (SELECT
        COUNT(*)    
    FROM
        ANIMAL_OUTS
    WHERE
        HOUR(DATETIME)=@hour
    ) as COUNT
FROM
    ANIMAL_OUTS
WHERE
    @hour < 23

맨 마지막의 WHERE 절을 반복문처럼 사용하기 때문에,
맨 첫 줄의 (@hour := @hour+1) 동작으로 0을 뽑아내기 위해선
@hour의 변수값을 초기에 -1 로 설정해야한다.

COUNT를 뽑아내는 서브쿼리에선
@hour 변수값과 HOUR(DATETIME)을 비교해서 개수를 세면 된다!
SET 을 통한 변수 선언을 기억하자.

댓글남기기