집 >데이터 베이스 >MySQL 튜토리얼 >간격과 섬이 있는 연속 이벤트의 최소 및 최대 시간 간격을 찾는 방법은 무엇입니까?
간격과 고립이 있는 연속 행의 최소값과 최대값 찾기
행으로 표시되는 이벤트 시퀀스를 포함하는 정렬된 데이터세트의 컨텍스트에서 테이블에서 작업은 동일한 이벤트 유형을 공유하는 연속 행에 대한 최소 및 최대 시간 간격을 결정하는 것입니다. 이 문제는 간격과 섬이 포함된 데이터를 처리할 때 발생하므로 기존 집계 방법으로는 충분하지 않습니다.
입력 이해
입력 테이블은 다음 열로 구성됩니다.
연속 그룹 식별
연속 행 그룹 식별 동일한 이벤트 유형을 사용하여 이벤트 유형에 대한 행 번호와 전체 행 간의 차이를 계산합니다. 번호 매기기:row_number() over (partition by name, act order by rn) as seqnum_na row_number() over (partition by name order by rn) as seqnum_n이 새로운 열인 seqnum_na 및 seqnum_n은 각각 이벤트 유형의 시퀀스 번호와 전체 시퀀스 번호를 나타냅니다. seqnum_n에서 seqnum_na를 빼면 이벤트 유형 내의 각 연속 행 하위 집합에 대한 그룹 번호를 나타내는 새 열이 생성됩니다.
그룹 번호를 사용한 집계
그룹 번호 사용 식별되면 시작 시간과 종료 시간을 집계하여 각 항목의 최소값과 최대값을 찾을 수 있습니다. 그룹:select name, act, min(startt) as startt, max(endd) as endd from (select i.*, row_number() over (partition by name, act order by rn) as seqnum_na, row_number() over (partition by name order by rn) as seqnum_n from input i ) i group by (seqnum_n - seqnum_na), name, act;이름 및 이벤트 유형과 함께 이 그룹 번호로 그룹화함으로써 각 하위 집합 내의 연속 행을 효율적으로 식별하고 집계하여 원하는 최소 및 최대 시간 간격을 제공합니다.
위 내용은 간격과 섬이 있는 연속 이벤트의 최소 및 최대 시간 간격을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!