본문 바로가기
공부/프로그래머스

[프로그래머스] 59413번

by _음주토끼_ 2022. 6. 15.

입양 보낸 동물들의 정보를 담은 테이블 '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