首頁 > 資料庫 > mysql教程 > 如何根據特定的 Act 值找出連續行的最小值和最大值?

如何根據特定的 Act 值找出連續行的最小值和最大值?

Linda Hamilton
發布: 2025-01-05 08:44:41
原創
431 人瀏覽過

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

辨識連續行組進行聚合

問題:
檢索startt 和最大值end 表示特定行為值的連續行。每個唯一的名稱定義了不同的行為發生順序。輸入不提供用於行標識的附加列。

方法:

為了在每個名稱-行為群組中建立行標識,我們使用行號:

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;
登入後複製

此查詢對資料依行號差異,提供所需的輸出。

以上是如何根據特定的 Act 值找出連續行的最小值和最大值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板