2011-04-14 1 views
3

변수 시작 지점에서 시간 간격 :SQL - ID에 의해 그룹과 내가 각 행의 ID 및 DT_EVENT에 기록하는 이벤트 로그 테이블, 즉했습니다

ID  DT_EVENT 
------------------------- 
1  14-MAR-11 00:00:01 
2  14-MAR-11 00:02:00 
3  14-MAR-11 00:05:01 
1  14-MAR-11 00:08:01 
3  14-MAR-11 00:22:00 
1  14-MAR-11 15:00:01 
1  14-MAR-11 15:15:01 

나는 ID와 + a로 그룹에 필요 ID에 대한 첫 번째 이벤트부터 시작하여 20 분의 시간 간격. 예 :

EV_GROUP ID  DT_FIRST_EVENT  DT_LAST_EVENT   N_EVENTS 
----------------------------------------------------------------------- 
1   1  14-MAR-11 00:00:01 14-MAR-11 00:08:01  2 
2   2  14-MAR-11 00:02:00 14-MAR-11 00:02:00  1 
3   3  14-MAR-11 00:05:01 14-MAR-11 00:22:00  2 
4   1  14-MAR-11 15:00:01 14-MAR-11 15:15:01  2 

해당 dt 간격에 대한 그룹 절을 설정하는 방법에 대해 잘 모르겠습니다. 그것에 대한 어떤 생각? 사전에

TNX, 가브리엘은

답변

3
SELECT id, diff, MIN(dt_event), MAX(dt_event) 
FROM (
     SELECT t.*, 
       TRUNC((dt_event - FIRST_VALUE(dt_event) OVER (PARTITION BY id ORDER BY dt_event)) * 86400/1200) AS diff 
     FROM mytable t 
     ) 
GROUP BY 
     id, diff 
+0

중대한 작동하는 것 같다! 그러나 정확히 'diff'가 단절된 이유는 무엇입니까? 가장 중요한 쿼리의 group by 절에 왜 있는지 잘 모르겠습니다 ... –

+0

@TheClue :'diff'는 처음부터'20-minutes' 간격을 계산하는 가장 안쪽 쿼리의 표현식에 대한 별칭입니다. 대답과 explaination에 대한 – Quassnoi

+0

tnx, 그것은 매력처럼 작동합니다! –

관련 문제