ホームページ > データベース > mysql チュートリアル > 特定の Act 値に基づいて連続する行の最小値と最大値を見つける方法

特定の Act 値に基づいて連続する行の最小値と最大値を見つける方法

Linda Hamilton
リリース: 2025-01-05 08:44:41
オリジナル
396 人が閲覧しました

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

集計対象の連続する行グループの特定

問題:
startt と startt の最小値と最大値を取得する特定の行為値の連続する行に対して終了します。それぞれの一意の名前は、行為の発生の個別のシーケンスを定義します。入力には行識別用の追加列はありません。

アプローチ:

各名前-行為グループ内で行の識別を確立するには、行番号を利用します:

row_number() over (partition by name, act order by rn) as act_n
row_number() over (partition by name order by rn) as rn
ログイン後にコピー

これらの行番号により、グループ内の行を区別し、行為の連続した範囲を識別できます。値。

最小値と最大値の集計:

各名前と動作の組み合わせに対して必要な出力を見つけるには、連続する行グループ内のデータを集計します。重要な計算は 2 つの行番号の差です。

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート