ホームページ > データベース > mysql チュートリアル > SQL はデータセット内の連続する日付範囲をどのように識別できるのでしょうか?

SQL はデータセット内の連続する日付範囲をどのように識別できるのでしょうか?

Susan Sarandon
リリース: 2025-01-01 07:07:10
オリジナル
491 人が閲覧しました

How Can SQL Identify Consecutive Date Ranges Within a Dataset?

SQL を使用した連続する日付範囲の検出

日付の列内の連続する日付範囲を決定するには、SQL テクニックを使用できます。カレンダー オブジェクトに開始日と終了日の情報が必要で、特定の列に一連の日付が含まれており、隣接する日付と隣接しない日付が含まれるシナリオを考えてみましょう。これらの連続した範囲を効率的に識別するには、堅牢な SQL ソリューションが求められます。

1 つのアプローチには、日付値と行番号の差によってグループ化するときに、連続するシーケンスの不変特性を利用することが含まれます。次に、各グループ内の開始日と終了日がそれぞれ最小値と最大値として取得されます。

次の SQL クエリは、このアプローチを示しています。

WITH t AS (
  SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i
  FROM @d
  GROUP BY InfoDate
)
SELECT MIN(d),MAX(d)
FROM t
GROUP BY DATEDIFF(day,i,d)
ログイン後にコピー

このクエリは、日付を効果的にグループ化します。対応する行番号との差により、連続するシーケンスごとに個別のグループが作成されます。次に、各グループ内の最小日付と最大日付が開始範囲と終了範囲を表すために選択されます。

このメソッドを利用すると、目的の出力を取得でき、日付範囲の差によって並べ替えられた連続する日付範囲の包括的なリストが提供されます。開始日と終了日。

以上がSQL はデータセット内の連続する日付範囲をどのように識別できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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