ホームページ > データベース > mysql チュートリアル > アクティビティ グループ内の連続する行の最小および最大の開始時間と終了時間を見つける方法は?

アクティビティ グループ内の連続する行の最小および最大の開始時間と終了時間を見つける方法は?

Susan Sarandon
リリース: 2025-01-03 01:03:39
オリジナル
705 人が閲覧しました

How to Find Minimum and Maximum Start and End Times for Consecutive Rows within Activity Groups?

連続する行の最小値と最大値の検索

名前でグループ化され、行番号で並べられたアクティビティを表す行を含むデータセットがあります。目標は、各アクティビティ グループ内の連続する行の開始時間と終了時間の最小値と最大値を見つけることです。

行番号の差を使用した解決策:

1 つのアプローチは次のとおりです。行番号間の違いを使用して、同じ行が連続する行を識別します。アクティビティ:

with cte as (
  select *,
    row_number() over (partition by name order by rn) as seqnum_n,
    row_number() over (partition by name, act order by rn) as seqnum_na
  from input
)
select name, act, min(startt), max(endd)
from cte
group by seqnum_n - seqnum_na, name, act;
ログイン後にコピー

説明:

  1. 2 つの追加列を追加して、cte と呼ばれる共通テーブル式 (CTE) を作成します。

    • seqnum_n: 各名前内の行番号group.
    • seqnum_na: 各名前アクティビティ グループ内の行番号。
  2. seqnum_n と seqnum_na の差を計算します。各アクティビティ内の連続する行は、同じ差分値を持ちます。
  3. 差分値、名前、アクティビティでグループ化し、最小値と最大値を集計します。

以上がアクティビティ グループ内の連続する行の最小および最大の開始時間と終了時間を見つける方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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