입양 시각 구하기(2)(programmers)

minllny·2024년 3월 1일


이 문제 유형은 또 새로웠습니다.
0~23 숫자행으로 이루어진 테이블을 자체적으로 만들어 주고 조인을 해주었습니다.

SELECT H HOUR
     , CASE WHEN COUNT IS NULL THEN 0 ELSE COUNT END COUNT
FROM (
      SELECT DATE_FORMAT(DATETIME, '%k') HOUR
           , COUNT(ANIMAL_ID) COUNT
      FROM ANIMAL_OUTS
      GROUP BY HOUR) AS T1
      RIGHT JOIN 
     (SELECT 0 AS H UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION 
      SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION 
      SELECT 10 UNION SELECT 11 UNION SELECT 12 UNION SELECT 13 UNION SELECT 14 UNION 
      SELECT 15 UNION SELECT 16 UNION SELECT 17 UNION SELECT 18 UNION SELECT 19 UNION 
      SELECT 20 UNION SELECT 21 UNION SELECT 22 UNION SELECT 23) AS T2 ON T1.HOUR = T2.H
ORDER BY HOUR

헤맸던 부분 첫 번째
0~23 시간대를 새로 만들어주기!! 구글링을 통해 알았다

SELECT 0 AS H UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION 
      SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION 
      SELECT 10 UNION SELECT 11 UNION SELECT 12 UNION SELECT 13 UNION SELECT 14 UNION 
      SELECT 15 UNION SELECT 16 UNION SELECT 17 UNION SELECT 18 UNION SELECT 19 UNION 
      SELECT 20 UNION SELECT 21 UNION SELECT 22 UNION SELECT 23

다음은 datetime형식을 0~23(시)로만 표현하기
SELECT DATE_FORMAT(DATETIME, '%k') HOUR
profile
SQL 끄적끄적

0개의 댓글