SQL 문제
프로그래머스 - 입양 시각 구하기(2)_set @
DDG
2024. 1. 9. 16:00
입양 시각 구하기 (2)
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다
-- 코드를 입력하세요
# 변수를 지정
# HOUR는 1씩 증가해야 하므로 -1로 설정해서 0시도 나오게 한다.
SET @HOUR := -1;
SELECT (@HOUR := @HOUR +1) AS HOUR,
(
SELECT
COUNT(HOUR(DATETIME))
FROM
ANIMAL_OUTS
WHERE #우리가 만든 변수가 DATETIME이라는 조건
HOUR(DATETIME) = @HOUR
) AS COUNT
FROM
ANIMAL_OUTS
WHERE #@HOUR가 22가 되면 +1 되서 23시까지 출력
@HOUR <23
이 문제를 GROUP BY로 풀면 실제로 입양된 시각인 7시 부터 나오게 된다.
문제에서는 24시간을 보기 위하여 변수를 만들어야 한다.
새로운 변수를 만드는 코드는
SET @변수명 := 값
형태로 지정한다.
SET으로 변수를 만들때에는 =과 := 둘다 사용가능하지만
SELECT 절에서 변술를 만들 때에는 무조건 := 써줘야 변수로 인식한다.
SELECT @변수명 := 대입값;
그 이유는 :=는 =인 대입 연산자와 헷갈리기 때문이라고 한다.
초기 변수 @HOUR를 -1로 설정하여 0시도 추출하도록 한다.
쿼리가 돌아가면서 +1씩 증가하기 때문에 -1을 초기값으로 지정하였다.
서브쿼리를 만들어 @HOUR와 DATEIME를 이어주고
COUNT를 통해 입양건 수를 추출한다.