본문 바로가기
STUDY/SQL

GENERATE_SERIES()

by NOTEEE 2018. 5. 4.

generate_series() 시리즈 생성 함수


통계쿼리를 살펴보는 중 찾아보았다.


oracle에서 CONNECT BY LEVEL 비슷한 기능을 한다.


아래 링크 참조 - 

https://www.postgresql.org/docs/9.5/static/functions-srf.html


제)

-- 시간별
SELECT
    TO_CHAR(START_DATE, 'YYYY-MM-DD HH24:00') AS START_DATE,
    TO_CHAR(START_DATE +'1 hours''YYYY-MM-DD HH24:00') AS END_DATE
FROM generate_series(TO_CHAR(CURRENT_TIMESTAMP + '-1 days','YYYY-MM-DD HH24:00')::timestamp
                    CURRENT_TIMESTAMP, '1 HOUR') START_DATE
 
-- 일간
SELECT
    TO_CHAR(START_DATE, 'YYYY-MM-DD') AS START_DATE,
    TO_CHAR(START_DATE +'1 days''YYYY-MM-DD') AS END_DATE
FROM generate_series(TO_CHAR(CURRENT_TIMESTAMP + '-30 days','YYYY-MM-DD')::timestamp
                    CURRENT_TIMESTAMP, '1 days') START_DATE
 
-- 주간
SELECT
    TO_CHAR(START_DATE, 'YYYY-MM-DD') AS START_DATE,
    TO_CHAR(START_DATE +'7 DAY''YYYY-MM-DD') AS END_DATE
FROM generate_series(TO_CHAR(CURRENT_TIMESTAMP + '-30 days','YYYY-MM-DD')::timestamp
                    CURRENT_TIMESTAMP, '7 DAY') START_DATE
 
-- 월간
SELECT
    TO_CHAR(START_DATE, 'YYYY-MM') AS START_DATE,
    TO_CHAR(START_DATE::timestamp +'1 MONTH''YYYY-MM') AS END_DATE
FROM generate_series(TO_CHAR(CURRENT_TIMESTAMP + '- 1 YEARS','YYYY-MM-DD')::timestamp
                    CURRENT_TIMESTAMP, '1 MONTH') START_DATE
 
cs

'STUDY > SQL' 카테고리의 다른 글

MYSQL 시간별 통계쿼리  (0) 2018.08.23
TIBERO DATA IMPORT, EXPORT  (0) 2018.07.02
LTRIM, RTRIM, TRIM  (0) 2018.02.23
REPLACE  (0) 2018.02.23
REGEXP_SUBSTR  (0) 2018.02.22