>데이터 베이스 >MySQL 튜토리얼 >간격과 아일랜드가 있는 연속 행에서 최소값과 최대값을 찾는 방법은 무엇입니까?

간격과 아일랜드가 있는 연속 행에서 최소값과 최대값을 찾는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-24 19:14:11772검색

How to Find Minimum and Maximum Values Across Consecutive Rows with Gaps and Islands?

간격 및 아일랜드가 있는 연속 행의 최소값 및 최대값 찾기

목표는 시작 및 종료 열의 최소값 및 최대값을 추출하는 것입니다. 동일한 액트 값을 공유하는 연속 행의 경우 다른 액트가 있는 행의 간격과 섬을 무시하면서 값.

해결책:

이를 달성하기 위해 행 번호를 활용하여 유사한 행의 연속 그룹을 식별합니다.

with cte as (
  select name, act, rn, startt, endd,
         row_number() over (partition by name, act order by rn) as act_rn
  from input
)
select name, act, min(startt), max(endd)
from cte
group by name, act, act_rn - rn;

설명:

  • 하위 쿼리 cte는 입력 데이터에 행 번호와 막 행 번호를 추가합니다.
  • 메인 쿼리는 데이터를 이름, 막, 막 행 번호와 행 번호의 차이별로 그룹화합니다. 이 차이는 특정 액트 값 내에서 연속된 행과 연속되지 않은 행을 구별하는 데 사용됩니다.
  • 그룹화를 통해 각 연속 그룹의 최소값과 최대값을 집계하여 간격과 섬을 제거할 수 있습니다.

위 내용은 간격과 아일랜드가 있는 연속 행에서 최소값과 최대값을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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