집 >데이터 베이스 >MySQL 튜토리얼 >특정 액트 값을 기반으로 연속 행의 최소값과 최대값을 찾는 방법은 무엇입니까?
집계를 위한 연속 행 그룹 식별
문제:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!