데이터베이스
[프로그래머스] 입양 시각 구하기(2)
담쏙
2021. 11. 28. 22:48
728x90
0시부터 23시까지 시간대 별로 입양이 몇 건이 발생했는지 조회해야 한다.
실제 테이블에는 9시부터 17시까지의 기록밖에 없기 때문에 쿼리문에서 로컬 변수를 활용해야 한다.
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;
1. SET @변수명 := 초기값; 으로 변수를 선언한다.
@가 붙은 변수는 프로시저가 종료되어도 유지된다.
2. SELECT (@hour := @hour + 1) 은 @hour을 1씩 증가하며 전체 SELECT 문을 실행하며 WHERE 문으로 인해 @hour < 23 일때까지 계속 @hour의 값이 증가한다.
3. DATETIME의 HOUR이 @hour가 같은 경우에만 COUNT를 HOUR에 조인한다.
로컬 변수 사용 문제는 처음이라 다른 사람들의 풀이를 참고했다.