Mysql group by 시에 없는 항목 출력하기.
아래 쿼리 실행시에 1부터 24까지 출력된다.
RIGHT JOIN으로 해당 테이블을 사용하여 없는 항목을 출력 가능하다.
WITH RECURSIVE cte AS (
SELECT 1 AS n
UNION ALL
SELECT n + 1 FROM cte WHERE n < 24
)SELECT n FROM cte
아래 없는 시간에 관한 group by 전체 예시이다.
SET sql_mode = '';
SELECT B.n ,
A.total
FROM (
SELECT
DATE_FORMAT(날짜,'%H') AS "COL_01",
COUNT(*) AS total
FROM 테스트
WHERE LEFT(날짜,4) = '2021'
GROUP BY DATE_FORMAT(날짜,'%H')
) A
RIGHT JOIN(
WITH RECURSIVE cte AS (
SELECT 1 AS n
UNION ALL
SELECT n + 1 FROM cte WHERE n < 24
)
SELECT n FROM cte
) B ON A.COL_01 = B.n ;
'개발 > Mysql' 카테고리의 다른 글
[mysql] 파티셔닝 테이블 (partitioning table) (0) | 2022.09.02 |
---|---|
[mysql] json parsing 방법 (json_extract, json_search, json_remove, json_array_append) (0) | 2022.02.24 |
[Mysql] source 여러개 파일 import 한번에 하기 (0) | 2021.03.22 |
[Mysql] 그룹별 누적 합계 구하기 (0) | 2020.08.19 |
[Mysql] 그룹별 누적 카운트 합계 (0) | 2020.08.13 |