소근소근

[프로그래머스 - 입양 시각 구하기(2)] MYSQL , GROUP BY , DATETIME 추출 본문

Algorithm

[프로그래머스 - 입양 시각 구하기(2)] MYSQL , GROUP BY , DATETIME 추출

JJureng 2022. 2. 6. 15:29
728x90
반응형
SMALL

단순히 GROUP BY만 해서 출력한다고 생각해서 틀렸던 문제이다.

주어진 DB에서는 시간이 7~19 만 있는데 이 문제에서는 0~23까지 모두 출력해야 한다. 

즉, COUNT가 0 이어도 출력해야 하는 것이었다. 

계속 고민하다 모르겠어서 풀이를 검색해봤다.

 

SET 으로 변수를 설정해서 증가시키면서 출력하면 되는 문제였다.

SET 변수 설정은 몰랐어서 ㅎㅎ...

 

SET @H := -1;
SELECT @H := @H + 1 AS HOUR , (SELECT COUNT(*)
                               FROM ANIMAL_OUTS
                               WHERE HOUR(DATETIME) = @H
                              ) AS COUNT
FROM ANIMAL_OUTS
WHERE @H < 23

SELECT 문에서 증가시켜주고, WHERE에서 종료 조건을 달아준다.

0~23까지 증가시키면서 TABLE에서 시간이 일치하는 TUPLE을 카운트하면 된다.

 

그리고 DATETIME의 경우 HOUR(DATETIME)처럼 시간만 따로 추출이 가능하다. 

마찬가지로, YEAR, MONTH, DAT, HOUR, MINUTE, SECOND모두 가능하다.

 

다른 방법으로는

1. 날짜 추출

DATE_FORMAT(DATETIME , '%Y-%m-%d') 를 하면 1997-09-02

2. 시간 추출

DATE_FORMAT(DATETIME , '%H:%i:%s') 를 하면 '14:32:55' 

 

이런식으로 추출도 가능하다.  

728x90
반응형
LIST