>데이터 베이스 >MySQL 튜토리얼 >동일한 행위 값의 연속 하위 집합 내에서 최소 및 최대 시작 및 끝 값을 찾는 방법은 무엇입니까?

동일한 행위 값의 연속 하위 집합 내에서 최소 및 최대 시작 및 끝 값을 찾는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-22 12:36:14255검색

How to Find Minimum and Maximum startt and endd Values within Consecutive Subsets of Identical act Values?

연속 행 하위 집합 최소 및 최대 값

동일한 행위 값의 연속 하위 집합 내에서 startt 및 endd 값을 식별하고 집계하는 쿼리 찾기, 이 질문은 데이터 조작 및 집계 기술에 대해 자세히 설명합니다.

이 문제에 접근하기 위해 우리는 다음 단계를 활용할 수 있습니다.

  1. 고유 행 번호 할당:
    데이터를 이름별로 분할하고 각 이름 그룹 내의 각 액트 값에 순차적인 행 번호를 할당합니다. 이를 통해 연속된 행을 구별할 수 있습니다.
  2. 행 차이 계산:
    각 막의 행 번호 간의 차이를 계산합니다(예: rn - act_n). 이 차이는 연속된 하위 집합 내에서 행위 값의 위치를 ​​나타냅니다.
  3. 행위 연속 위치별 그룹화:
    행 차이를 그룹화 키로 사용하여 데이터를 집계합니다. 이는 동일한 연속 하위 집합에 속하는 행을 그룹화합니다.
  4. 최소값 및 최대값 찾기:
    그룹화된 각 하위 집합 내에서 startt 및 endd의 최소값과 최대값을 계산합니다. 이는 원하는 출력을 제공합니다.

다음 쿼리는 이 접근 방식을 구현합니다.

with cte as (
  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 input
)
select
    name
    ,act
    ,min(startt) startt
    ,max(endd)   endd
    ,min(rn)     min_rn
    ,max(rn)     max_rn
from cte
group by 
    name
    ,act
    ,rn - act_n
order by 
    name
    ,min(rn)

위 내용은 동일한 행위 값의 연속 하위 집합 내에서 최소 및 최대 시작 및 끝 값을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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