세션 길이를보고 사용자가 몇 분 동안 로그인 한 시간을 확인하려고합니다. 문제는 세션이 활동별로 행으로 분리된다는 것입니다. 활동 종료가 다음 행 활동 시작과 동일하면 동일한 세션의 일부이므로 함께 계산해야합니다. 이상적으로SQL에서 여러 행에 걸쳐 연속 세션 그룹화
는 같을 것이다, 내가 ACTIVITY_START 및 ACTIVITY_END 가지고 세션을 생성하고 싶습니다 : 나는이었다 한 원래 무엇을
ACTVITY_START | ACTIVITY_END | SESSION
----------------|-----------------|----------
2/16/2016 19:00 | 2/16/2016 20:51 | 1
2/16/2016 20:51 | 2/16/2016 20:52 | 1
2/16/2016 20:52 | 2/16/2016 20:54 | 1
2/16/2016 20:54 | 2/16/2016 21:25 | 1
2/16/2016 21:25 | 2/16/2016 21:26 | 1
2/16/2016 21:26 | 2/16/2016 22:13 | 1
2/16/2016 22:13 | 2/16/2016 22:14 | 1
2/16/2016 22:14 | 2/16/2016 22:41 | 1
2/18/2016 21:59 | 2/18/2016 23:07 | 2
2/18/2016 23:07 | 2/19/2016 0:00 | 2
2/19/2016 0:00 | 2/19/2016 1:56 | 2
2/19/2016 1:56 | 2/19/2016 1:58 | 2
2/19/2016 19:08 | 2/19/2016 20:53 | 3
2/19/2016 20:53 | 2/20/2016 0:00 | 3
2/20/2016 0:00 | 2/20/2016 0:05 | 3
2/20/2016 0:05 | 2/20/2016 2:00 | 3
2/20/2016 2:00 | 2/20/2016 2:12 | 3
2/20/2016 2:12 | 2/20/2016 2:28 | 3
2/20/2016 2:28 | 2/20/2016 2:32 | 3
2/20/2016 12:38 | 2/20/2016 14:16 | 4
2/20/2016 14:26 | 2/20/2016 14:27 | 5
라인 같은 행에 다음 활동 시작과 함께 활동 끝 위로 그랬다 :
SELECT DENSE_RANK() OVER (ORDER BY CASE WHEN A.ACTIVITY_END = B.ACTIVITY_START THEN 0 ELSE 1 END)
그러나이 세션은 세션이 변경 될 때 모든 세션을 항상 분리하여 순위 지정합니다.
새 세션이 시작될 때마다 SESSION이 어떻게 증가합니까?
그것은 유감하는 Netezza의 데이터베이스입니다. 내가 무엇을했는지 잊어 버렸습니다. – user6745154
문서에 따르면 Netezza는 '지연'및 '합계'창 기능을 모두 지원합니다. 그래서 내 대답은 잘 작동합니다. 최악의 경우, 사소한 구문 수정을해야 할 수도 있지만 일반적으로 좋은 아이디어 여야합니다. – sstan
몇 가지 비틀기를해야했지만 네 생각은 완벽하게 작동했습니다. 감사! – user6745154