오라클 10분 간격, 5분 단위 쿼리, 시간대별 통계, 분 단위 계산

오라클 10분 간격

오라클 데이터베이스에 시간대별 통계가 필요한 상황입니다. 5분, 10분 간격 단위로 계산이 필요한 상황인데, 의외로 해당 쿼리를 적어놓은 블로그가 없습니다. 😭😭😭 그리하여 DUAL 테이블과 계층형 쿼리(CONNECT BY 조건)를 활용하여 5분 단위 쿼리를 만드는 방법에 대하여 안내해 드리겠습니다.

오라클 5분 단위 쿼리

오라클 5분 단위 쿼리

이번 주제에서 알아야 할 것은 오라클 계층형 쿼리와 TO_DATE 함수, 그리고 TO_CHAR 함수이며, 간단한 사용방법만 알고 계시면 누구나 응용할 수 있을 정도로 쉽게 안내해 드릴 예정입니다.

시간대별 통계

오라클 TO_DATE에서 1은 1 DAY입니다. 이를 활용하여 10분, 5분 등의 시간을 계산할 수 있습니다.

  • 1은 하루입니다. (1 => 1 DAY)
  • 하루는 24시간입니다. 1을 24로 나누면 1시간입니다. (1/24 => 1 HOUR)
  • 1시간은 60분입니다. 그렇기 때문에 1분은 1/60시간입니다. (1/1440 => 1 MINUTE)

분 단위 계산

이번 예제는 시간, 분까지 시간대별 통계를 구하는 것이라 이 정도까지 하겠습니다. 초 단위까지 필요시에는 조금 더 계산하시면 됩니다. 예제 자료의 바인드 변수는 다음과 같습니다. :FRTM은 시작시간 '1100', :TOTM은 종료시간 '1400', :ITV는 분 간격 15로 설정합니다.

SELECT TO_CHAR (TO_DATE (:FRTM, 'HH24:MI') + ( (LEVEL - 1) * :ITV / 1440), 'HH24:MI') AS TM,
                LEVEL
           FROM DUAL
     CONNECT BY TO_DATE (:FRTM, 'HH24:MI') + ( (LEVEL - 1) * :ITV / 1440) <= TO_DATE (:TOTM, 'HH24:MI');

TM              LEVEL
---------- ----------
11:00               1
11:15               2
11:30               3
11:45               4
12:00               5
12:15               6
12:30               7
12:45               8
13:00               9
13:15              10
13:30              11
13:45              12
14:00              13

13 rows selected.

댓글