SQL Study/Programmers

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

choidawon 2025. 11. 11. 16:06

문제설명

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

 

SQL문을 실행하면 다음과 같이 나와야 합니다.

HOUR COUNT
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 3
8 1
9 1
10 2
11 13
12 10
13 14
14 9
15 7
16 10
17 12
18 16
19 2
20 0
21 0
22 0
23 0

 

코드설명

SQL문 작성 결과, 7시까지만 데이터가 조회되는 것을 확인할 수 있다.

 

이를 위해 set 함수를 이용해줘야 하는데 검색하여 찾아보았다.

 

SET @변수명 = 저장할값; 

SET @변수명 := 저장할값;

SELECT @변수명 := 저장할값; 기본적인 문법이고, 셋 중에 골라 사용하면 된다.

 

<@변수에는 숫자, 문자, binary, NULL 이런 자료 1개만 간단하게 저장할 수 있다.>

현재 계산 중인 시간대에 해당하는 데이터만 남기기 위한 조건으로, ANIMAL_OUTS 테이블에 있는 DATETIME 변수와 @HOUR 변수가 동일한 순간 카운트를 진행하도록 조건을 준다.

 

코드

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;

 

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59413