본문 바로가기

SQL/프로그래머스

SQL 프로그래머스_7일차_1 SET, SELECT 서브쿼리 ,변수 컬럼 생성

입양 시각 구하기(2)

 

문제

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

 

테이블 소개

 

 

정답 예시

정답 코드 

SET @HOUR =-1;  -- SET HOUR이라는 변수 생성 -1지정
SELECT (@HOUR := @HOUR+1) AS HOUR    -- 변수에 1 더하기 N+=1
,
(SELECT COUNT(HOUR(DATETIME))    -- 시간별 수 세기
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) = @HOUR) COUNT   -- 시간과 HOUR컬럼의 시간이 동일하면 시간별로 COUNT 하라
FROM ANIMAL_OUTS
WHERE @HOUR < 23   -- @HOUR이 22가 될때까지 1씩 더하라
ORDER BY HOUR

 

어려움

SQL에서 SET을 처음 써보았다

변수 생성이라는 꿀팁?을 알게 되었다,

SET을 몰라서 처음에는 시간별로 GROUPBY 를 하였다.

그러나 데이블의 데이터는 0시부터 23시까지 존재하지 않았다.