SQL의 여러 행에 걸쳐 연속 세션 그룹화

사용자 6745154

사용자가 연속으로 몇 분 동안 로그인했는지 확인하기 위해 세션 길이를 확인하려고합니다. 문제는 세션이 활동별로 행으로 나뉘어져 있다는 것입니다. 활동 종료가 다음 행 활동 시작과 동일하면 동일한 세션의 일부이며 함께 계산되어야합니다.

이상적으로는 다음과 같습니다. ACTIVITY_START 및 ACTIVITY_END가 있으며 SESSION을 만들고 싶습니다.

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이 증가하도록하려면 어떻게해야합니까?

sstan

MySQL 데이터베이스를 사용하는 것으로 질문에 태그를 지정했지만, dense_rank()window 함수를 사용하여 "성공적인"쿼리를 수행했다는 사실 은 이것이 MySQL이 아님을 분명히 알려줍니다. MySQL은 현재 창 기능을 지원하지 않습니다.

그래도 데이터베이스가 무엇이든 Windows 기능을 지원한다는 사실을 기반으로 계속해서 lagsum창 기능에 대한 지원이 포함되어 있다고 가정 합니다. 이 경우 lag함수를 사용하여 이전 행의 연속이 아닌 행을 식별 할 수 있습니다 . 그런 다음 누적 합계를 사용하여 lag함수에서 생성 된 값을 기반으로 세션 ID를 생성 할 수 있습니다 .

with cte as (
  select a.*,
         case when a.activity_start = lag(a.activity_end) over (order by a.activity_start)
              then 0 else 1 end as grp_id
    from activity a
)
select activity_start,
       activity_end,
       sum(grp_id) over (order by activity_start) as session_id
  from cte
   order by activity_start

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

r의 여러 열에 걸쳐 dplyr 그룹화?

분류에서Dev

여러 섹션에 걸쳐 연속 계산되는 Swift IndexPath?

분류에서Dev

랩 어라운드를 사용하여 세 개의 연속 인덱스에 걸쳐있는 수식의 성능 최적화

분류에서Dev

여러 스레드에 걸쳐 개체의 속성 설정

분류에서Dev

R의 여러 열에 걸쳐 행당 히스토그램 그리기

분류에서Dev

여러 섹션에 걸쳐 Word에서 연속 페이징을 설정하려면 어떻게합니까?

분류에서Dev

두 문자열 사이의 여러 줄에 걸쳐 텍스트 세그먼트 바꾸기-정규식

분류에서Dev

다른 연산자를 사용하여 여러 열에 걸쳐 데이터 프레임의 행 집계

분류에서Dev

여러 개의 Windows 10 가상 데스크톱에 걸쳐 지속되는 창?

분류에서Dev

여러 날짜에 걸쳐 Oracle SQL 쿼리 실행

분류에서Dev

neo4j의 여러 노드에 걸쳐 여러 속성에 걸쳐 고유 한 제약 조건을 만들 수 있습니까?

분류에서Dev

여러 행에 걸쳐있는 방식의 Haskell "let"구문

분류에서Dev

여러 열에 의한 SQL 그룹화

분류에서Dev

작은 여러 차트에 걸쳐 선 연결 d3js

분류에서Dev

여러 디스크에 걸쳐있는 파티션

분류에서Dev

R의 그룹에 의해 NA 행에 걸쳐 요약하는 방법

분류에서Dev

Pandas : 여러 열에 걸쳐 행에서 지정된 값의 빈도 얻기

분류에서Dev

Oracle을 사용하여 SQL의 여러 테이블에 걸쳐 집계

분류에서Dev

SQL에서 여러 세트로 레코드 그룹화

분류에서Dev

SQL Select WHERE Column NOT LIKE 여러 줄에 걸쳐

분류에서Dev

여러 자릿수에 걸쳐 로그 시퀀스 생성

분류에서Dev

Spark 1.5.2 : 시간 범위에 걸쳐 DataFrame 행 그룹화

분류에서Dev

트랜잭션이 vb.net의 여러 문에 걸쳐있을 수 있습니까?

분류에서Dev

트랜잭션이 vb.net의 여러 문에 걸쳐있을 수 있습니까?

분류에서Dev

Linux의 ZFS는 여러 장치에 걸쳐 부팅 파티션 확장을 지원합니까?

분류에서Dev

여러 행에 걸쳐 jsonb 배열 내의 PostgreSQL 카운트 결과

분류에서Dev

ggplot2의 여러 플롯에 걸쳐 선 만들기

분류에서Dev

여러 열에 걸쳐 쌍의 인스턴스 계산

분류에서Dev

iText의 여러 페이지에 걸쳐있는 양식

Related 관련 기사

  1. 1

    r의 여러 열에 걸쳐 dplyr 그룹화?

  2. 2

    여러 섹션에 걸쳐 연속 계산되는 Swift IndexPath?

  3. 3

    랩 어라운드를 사용하여 세 개의 연속 인덱스에 걸쳐있는 수식의 성능 최적화

  4. 4

    여러 스레드에 걸쳐 개체의 속성 설정

  5. 5

    R의 여러 열에 걸쳐 행당 히스토그램 그리기

  6. 6

    여러 섹션에 걸쳐 Word에서 연속 페이징을 설정하려면 어떻게합니까?

  7. 7

    두 문자열 사이의 여러 줄에 걸쳐 텍스트 세그먼트 바꾸기-정규식

  8. 8

    다른 연산자를 사용하여 여러 열에 걸쳐 데이터 프레임의 행 집계

  9. 9

    여러 개의 Windows 10 가상 데스크톱에 걸쳐 지속되는 창?

  10. 10

    여러 날짜에 걸쳐 Oracle SQL 쿼리 실행

  11. 11

    neo4j의 여러 노드에 걸쳐 여러 속성에 걸쳐 고유 한 제약 조건을 만들 수 있습니까?

  12. 12

    여러 행에 걸쳐있는 방식의 Haskell "let"구문

  13. 13

    여러 열에 의한 SQL 그룹화

  14. 14

    작은 여러 차트에 걸쳐 선 연결 d3js

  15. 15

    여러 디스크에 걸쳐있는 파티션

  16. 16

    R의 그룹에 의해 NA 행에 걸쳐 요약하는 방법

  17. 17

    Pandas : 여러 열에 걸쳐 행에서 지정된 값의 빈도 얻기

  18. 18

    Oracle을 사용하여 SQL의 여러 테이블에 걸쳐 집계

  19. 19

    SQL에서 여러 세트로 레코드 그룹화

  20. 20

    SQL Select WHERE Column NOT LIKE 여러 줄에 걸쳐

  21. 21

    여러 자릿수에 걸쳐 로그 시퀀스 생성

  22. 22

    Spark 1.5.2 : 시간 범위에 걸쳐 DataFrame 행 그룹화

  23. 23

    트랜잭션이 vb.net의 여러 문에 걸쳐있을 수 있습니까?

  24. 24

    트랜잭션이 vb.net의 여러 문에 걸쳐있을 수 있습니까?

  25. 25

    Linux의 ZFS는 여러 장치에 걸쳐 부팅 파티션 확장을 지원합니까?

  26. 26

    여러 행에 걸쳐 jsonb 배열 내의 PostgreSQL 카운트 결과

  27. 27

    ggplot2의 여러 플롯에 걸쳐 선 만들기

  28. 28

    여러 열에 걸쳐 쌍의 인스턴스 계산

  29. 29

    iText의 여러 페이지에 걸쳐있는 양식

뜨겁다태그

보관