반응형

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 ;
반응형

+ Recent posts