ホームページ > データベース > mysql チュートリアル > SQL で日付範囲内のレコードを効率的にカウントするにはどうすればよいですか?

SQL で日付範囲内のレコードを効率的にカウントするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-20 22:39:10
オリジナル
417 人が閲覧しました

How to Efficiently Count Records Within a Date Range in SQL?

2 つの日付間の日付のレコード数の計算

多軸グラフの日付範囲内にあるレコード数を計算するには、次のようにします。元のクエリのオペランド型の不一致を克服する必要があります。この問題に対処するために、集計テーブルまたは集計関数を活用する代替アプローチを検討します。

パフォーマンスの高いソリューションの 1 つは、集計テーブルまたは集計関数の利用です。 Itzik Ben-Gan の有名な集計関数は、次のように組み込むことができます。

DECLARE @StartDate date = '2020-11-01', @EndDate date = '2021-02-22';

  WITH
    L0 AS ( SELECT 1 AS c 
            FROM (VALUES(1),(1),(1),(1),(1),(1),(1),(1),
                        (1),(1),(1),(1),(1),(1),(1),(1)) AS D(c) ),
    L1 AS ( SELECT 1 AS c FROM L0 AS A CROSS JOIN L0 AS B ),
    L2 AS ( SELECT 1 AS c FROM L1 AS A CROSS JOIN L1 AS B ),
    Nums AS ( SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rownum
              FROM L2 )
    Date_Range_T (d_range) AS (
      SELECT TOP(DATEDIFF(day, @StartDate, @EndDate) + 1)
          DATEADD(day, rownum - 1, @StartDate) AS d_range,
          DATEADD(day, rownum, @StartDate) AS d_rangeNext
      FROM Nums
    )
SELECT d_range, COUNT(Id) AS Total 
FROM Date_Range_T 
LEFT JOIN tbl_Support_Requests R
    ON R.CreatedDate >= T.d_range AND R.CreatedDate < T.d_rangeNext
GROUP BY d_range
ORDER BY d_range ASC
ログイン後にコピー

このアプローチでは、指定された期間の日付範囲テーブルが生成され、その後、tbl_Support_Requests テーブルとの左結合で使用され、範囲内のレコードがカウントされます。各日付範囲

以上がSQL で日付範囲内のレコードを効率的にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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