https://school.programmers.co.kr/learn/courses/30/lessons/59413
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
SET @HOUR = -1;
SELECT (@HOUR := @HOUR+1) AS HOUR,
( SELECT COUNT(HOUR(DATETIME))
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME)=@HOUR) AS COUNT
FROM ANIMAL_OUTS
WHERE @HOUR < 23
ORDER BY HOUR
처음보는 문법을 사용했다...
참고한 블로그
참고한 블로그2
- SET을 이용하여 @HOUR라는 변수를 -1로 초기화
- @HOUR에 1씩 더하면서 WHERE절로 @HOUR < 23 범위를 지정해준다.
(이유 : 1씩 더하기 때문에 @HOUR가 22여야 1더해서 23이 됨)
(SET을 사용할 때는 처음 선언할 때만 '='을 쓰고 그 이후에는 ':='을 쓴다고 한다.)- 서브쿼리로 시간마다 동물을 카운트 해준다.
(이때 HOUR는 0~23 범위를 1씩 증가하면서 진행하는데 HOUR(DATETIME)에 맞는 시간이 있으면 카운트 해주고 없으면 0이 되는 방식)
다시 한 번 풀어봐야하는 문제이다
기본 구조
SET variable_name = value;
ex) result : 50
SET @x = 10;
SELECT @x * 5 AS result;