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