티스토리 뷰

MySQL

[MySQL] 임시 테이블(데이터) 생성

얀타호수 2023. 4. 20. 13:42

안녕하세요.

 

오늘은 MySQL에서 임시 데이터 생성에 대해 알아보겠습니다.

시간별로 ROUND, AVG 등으로 연산 시에 데이터가 NULL이면 결과에 뜨지 않잖아요?

 

저는 월 평균 데이터 추산하는데 1~12월까지를 고정적으로 표현하고 NULL이면 0을 표현하고자 했습니다.

 

하여간 제 방법이 정답이진 않을 것 같아요!

 

WITH구문은 메모리 상에 가상의 테이블을 저장할 때 사용됩니다.

RECURSIVE의 여부에 따라 재귀, 비재귀 두가지 방법으로 사용이 가능합니다.

 

아래 문법 참고하세요.

WITH [RECURSIVE] TABLE명 AS (
    SELECT - # 비반복문. 무조건 필수
    [UNION ALL] # RECURSIVE 사용 시 필수. 다음에 이어붙어야 할 때 사용
    SELECT - 
    [WHERE -] # RECURSIVE 사용 시 필수. 정지 조건 필요할 때 사용
)

 

 

저는 1~12월까지의 데이터를 생성하는 것을 쿼리로 짰는데요.

아래 확인해보세요.

WITH RECURSIVE A as(
SELECT MAKEDATE(YEAR(NOW()),1) AS day
	UNION ALL
	SELECT DATE_ADD(A.day, INTERVAL 1 MONTH) AS day FROM A
    WHERE A.day < MAKEDATE(YEAR(NOW()),365) 
)
SELECT * FROM A;

 

피드백주시면 감사하겠습니다.

 

감사합니다!!