본문 바로가기

Data/Data Analysis

[MySQL] with recursive 구문 활용법

반응형

SQL관련 코딩에 대해서 공부하던중에 "0시~23시까지 속한 특정데이터 합산을 구해야함" 라는 문제가 있었고, 여기서 주의할점은 합산에 필요한 데이터에서 특정 시간대가 존재하지않을수도 있었다. 예시로, 계산에 사용되는 데이터에는 11시 데이터가 없을가능성이 있다. 따라서 11시에 해당되는 값은 0이 되어야한다.

 

그렇다면 0시~23시까지 있는 테이블을 만들어서 계산에 활용된 테이블을 join시켜줘야하는데, 0시~23시까지 있는 테이블을 어떻게 만들지가 관건이였다. 찾아보니 아래와같이 with recursive구문을 사용하면 쉽게 생성이 가능했다.

 

WITH RECURSIVE DIGIT AS (
    SELECT 0 as number
    UNION ALL
    SELECT number + 1
    FROM DIGIT
    WHERE number < 23
)

 

제일 첫번째 select문은 초기값을 설정하는것이고 그 이후에 어떻게 이어 붙힐지는 UNION ALL구문 밑에서 설정한다. 또한 이러한 반복문을 끝내기위한 조건물을 WHERE구문에 설정한다.

반응형