ホームページ >データベース >mysql チュートリアル >SQL クエリ結果の欠落した日付をカウント 0 で埋めるにはどうすればよいですか?

SQL クエリ結果の欠落した日付をカウント 0 で埋めるにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-12 21:51:15314ブラウズ

How to Fill Missing Dates in SQL Query Results with Zero Counts?

SQL 結果に空の日付を埋め込む

テーブルから日付とカウントをエクスポートするために MySQL にクエリを実行すると、日付範囲にギャップが生じる可能性があります。行方不明の日々。これらのギャップをカウント 0 のエントリで埋めるための簡単な方法は、サーバー側ストアド プロシージャを利用することです。

ストアド プロシージャによるサーバー側パディング

次のとおりです。ストアド プロシージャは、指定された範囲内のすべての可能な日付を含む一時テーブルを作成します。次に、このテーブルはクエリ結果と左結合され、欠落している日付が埋められます。

create procedure sp1(d1 date, d2 date)
  declare d datetime;

  create temporary table foo (d date not null);

  set d = d1
  while d <= d2 do
    insert into foo (d) values (d)
    set d = date_add(d, interval 1 day)
  end while

  select foo.d, count(date)
  from foo left join table on foo.d = table.date
  group by foo.d order by foo.d asc;

  drop temporary table foo;
end procedure

このプロシージャは 2 つの日付を入力として受け取り、それらの間にある可能性のあるすべての日付を含む一時テーブル foo を生成します。次に、元のクエリとの左結合を実行して、欠落している日付を含めて完全なデータセットを返します。

クライアント側チェック (オプション)

さらに、単純な現在の日付が前の日付に 1 日を加えたものと等しくない場合を処理するために、クライアント側 (Perl など) にチェックを実装できます。このような場合、カウントがゼロの文字列を出力に追加できます。

以上がSQL クエリ結果の欠落した日付をカウント 0 で埋めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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