입양 보낸 동물들의 정보를 담은 테이블 'ANIMAL_OUTS' 내에서
HOUR(1시간 간격)에 따라 입양된 동물의 수를 count하는 문제다.
하지만 테이블 구조 내에는 HOUR이 없다. 대신 연도, 월, 일, 시, 분이 기입된 DATETIME이 있다.
따라서 HOUR(DATETIME)을 이용해준다.
----------------------------------------------------------------------------------------------------------------------------
SET @HOUR := -1; # 시작을 -1로 한다. 밑에서 +1씩 증가시켜줄 것이다. 반복문처럼!
SELECT
(@HOUR := @HOUR+1) AS 'HOUR', # HOUR가 +1씩 증가하고 그 테이블 명을 'HOUR'로 지정.
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME)=@HOUR) AS 'COUNT'
FROM ANIMAL_OUTS
WHERE @HOUR < 23
----------------------------------------------------------------------------------------------------------------------------
이 문제에서는 SELECT문 내의 부분이 제일 관건이다. 사실 모든 문제에서 그랬다.(어쩌라구..
테이블 내에서 where문을 이용해서 HOUR(DATETIME)에 1씩 올라간 @HOUR을 각각 넣어준다.
그리고 그 범위 내에서 DATETIME(입양 시각) COUNT(*)한다.
다만, HOUR는 0에서 23시까지 오름차순으로 나열되어야 한다.
저 코드에서 마지막에 ORDER BY @HOUR를 써줘도 좋다. 근데 안 써도 된다.
이유는 시작을 0부터 +1씩 차차 증가하도록 했으니까 ORDER BY를 굳이 안 써도 오름차순이 되기 때문이다.
'공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 12977번 (0) | 2022.06.15 |
---|---|
[프로그래머스] 86051번 (0) | 2022.06.15 |
[프로그래머스] 42577번 (0) | 2022.06.15 |
[프로그래머스] 42840번 (0) | 2022.06.15 |
[프로그래머스] 42626번 (0) | 2022.06.15 |