ホームページ >データベース >mysql チュートリアル >同一のact値の連続するサブセット内の最小値と最大値の開始値と終了値を見つける方法は?

同一のact値の連続するサブセット内の最小値と最大値の開始値と終了値を見つける方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-22 12:36:14195ブラウズ

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

連続する行のサブセットの最小値と最大値

同一のact値の連続するサブセット内の開始値と終了値を識別して集計するクエリを探します。この質問は、データ操作と集計手法について詳しく説明します。

これにアプローチするには

  1. 一意の行番号を割り当てる:
    データを名前で分割し、各名前グループ内の各 Act 値に連続した行番号を割り当てます。 。これにより、連続する行を区別できるようになります。
  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)

以上が同一のact値の連続するサブセット内の最小値と最大値の開始値と終了値を見つける方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。