본문 바로가기
STUDY/SQL

오라클통계쿼리

by NOTEEE 2018. 1. 23.

ORACLE 시간/일/월별 통계쿼리


fromDate, toDate의 값을 받아 월별통계쿼리입니다.

SELECT
    TO_CHAR(ADD_MONTHS(TO_DATE(#{fromDate}, 'YYYY-MM'),(LEVEL - 1)),'YYYY-MM') AS START_TIME,
    TO_CHAR(ADD_MONTHS(TO_DATE(#{fromDate}, 'YYYY-MM'),(LEVEL)),'YYYY-MM') AS END_TIME
FROM DUAL
    CONNECT BY ADD_MONTHS(TO_DATE(#{fromDate}, 'YYYY-MM'),(LEVEL - 1)) <= TO_DATE(#{toDate}, 'YYYY-MM')
cs


fromData, toDate의 값을 받아 일별통계쿼리입니다.

SELECT 
    TO_CHAR(TO_DATE(#{fromDate}, 'YYYY-MM-DD'+ LEVEL - 1'YYYY-MM-DD') AS START_TIME,
    TO_CHAR(TO_DATE(#{fromDate}, 'YYYY-MM-DD'+ LEVEL, 'YYYY-MM-DD') AS END_TIME 
FROM DUAL 
CONNECT BY LEVEL <![CDATA[<=]]> TO_DATE(#{toDate}, 'YYYY-MM-DD'- TO_DATE(#{fromDate}, 'YYYY-MM-DD'+ 1
cs


fromData, toDate의 값을 받아 시간별통계쿼리입니다.


SELECT 
    TO_CHAR(STA_DT,'YYYY-MM-DD HH24:MI') AS START_TIME,
    TO_CHAR(END_DT,'YYYY-MM-DD HH24:MI') AS END_TIME
FROM 
    SELECT 
        TO_DATE(#{fromDate}, 'YYYY-MM-DD HH24:MI'+((LEVEL-1)) /24 STA_DT,
        TO_DATE(#{fromDate}, 'YYYY-MM-DD HH24:MI'+((LEVEL)) /24 END_DT
    FROM DUAL
    CONNECT BY LEVEL <![CDATA[<=]]> FLOOR((TO_DATE(#{toDate},'YYYY-MM-DD HH24:MI')
    -TO_DATE(#{fromDate},'YYYY-MM-DD HH24:MI'))*24+ 1
)
cs

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

LTRIM, RTRIM, TRIM  (0) 2018.02.23
REPLACE  (0) 2018.02.23
REGEXP_SUBSTR  (0) 2018.02.22
SYS_CONNECT_BY_PATH  (0) 2018.02.22
MySQL DATE 날짜 형식 바꾸기  (0) 2018.01.31