>데이터 베이스 >MySQL 튜토리얼 >특정 액트 값을 기반으로 연속 행의 최소값과 최대값을 찾는 방법은 무엇입니까?

특정 액트 값을 기반으로 연속 행의 최소값과 최대값을 찾는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-05 08:44:41382검색

How to Find Minimum and Maximum Values for Consecutive Rows Based on Specific Act Values?

집계를 위한 연속 행 그룹 식별

문제:
startt 및 최대값 검색 특정 행위 값의 연속 행에 대해 종료됩니다. 각 고유 이름은 행위 발생의 고유한 순서를 정의합니다. 입력은 행 식별을 위한 추가 열을 제공하지 않습니다.

접근 방식:

각 이름-행위 그룹 내에서 행 ID를 설정하기 위해 행 번호를 활용합니다.

row_number() over (partition by name, act order by rn) as act_n
row_number() over (partition by name order by rn) as rn

이 행 번호를 사용하면 그룹 내의 행을 구별하고 연속적인 행위 범위를 식별할 수 있습니다. 값.

최소 및 최대 집계:

각 이름-행위 조합에 대해 원하는 출력을 찾기 위해 연속 행 그룹 내에서 데이터를 집계합니다. 주요 계산은 두 행 번호의 차이입니다.

rn - act_n diff

이 차이는 각 그룹 내 위치를 나타내므로 연속된 범위를 결정할 수 있습니다.

select name, act, min(startt) startt, max(endd) endd
from (
  select
    name,
    act,
    row_number() over (partition by name order by name, startt) rn,
    row_number() over (partition by name, act order by name, startt) act_n,
    startt,
    endd
  from @t
)
group by (rn - act_n), name, act
order by name;

이 쿼리는 행 번호 차이로 데이터를 추출하여 원하는 출력을 제공합니다.

위 내용은 특정 액트 값을 기반으로 연속 행의 최소값과 최대값을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.