데이터베이스

[프로그래머스] 입양 시각 구하기(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에 조인한다.

 

로컬 변수 사용 문제는 처음이라 다른 사람들의 풀이를 참고했다.