ホームページ >データベース >mysql チュートリアル >ギャップやアイランドがある連続する行全体で最小値と最大値を見つける方法は?

ギャップやアイランドがある連続する行全体で最小値と最大値を見つける方法は?

DDD
DDDオリジナル
2024-12-24 19:14:11769ブラウズ

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

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