ホームページ >データベース >mysql チュートリアル >ヘルパー テーブルを使用して MySQL クエリの日付ギャップを埋めるにはどうすればよいですか?

ヘルパー テーブルを使用して MySQL クエリの日付ギャップを埋めるにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-26 14:01:11895ブラウズ

How Can I Fill Date Gaps in MySQL Queries Using a Helper Table?

ヘルパー テーブルを使用して MySQL の日付ギャップを埋める

データセットから正確なデータを取得するには、多くの場合、欠落している日付範囲に対処する必要があります。 MySQL では、ヘルパー テーブルを使用することで日付のギャップを埋めることができます。

指定された範囲内の特定の日付のデータをカウントして要約するクエリがあるとします。ただし、日付によってはレコードがない場合があり、結果にギャップが生じることがあります。この問題に対処するには、指定された範囲内のすべての日付を含むヘルパー テーブルを利用できます。

SELECT  d.dt AS date,
        COUNT(*) AS total,
        SUM(attitude = 'positive') AS positive,
        SUM(attitude = 'neutral') AS neutral,
        SUM(attitude = 'negative') AS negative
FROM    dates d
LEFT JOIN
        messages m
ON      m.posted_at >= d.dt
        AND m.posted_at < d.dt + INTERVAL 1 DAYS
        AND spam = 0
        AND duplicate = 0
        AND ignore = 0
GROUP BY
        d.dt
ORDER BY
        d.dt

このクエリでは:

  • ヘルパー テーブルの日付には、次の日付が含まれます。目的の範囲の開始から終了まで。
  • LEFT JOIN は、日付テーブルの行とメッセージの一致する行を結合します。
  • 日付テーブルの日付ごとに、一致するものがない場合でも、クエリはメッセージ テーブルから対応する行をカウントします。
  • 結果は、次の値が 0 である完全なデータセットになります。メッセージ テーブルに一致するレコードがない日付。

このアプローチにより、日付のギャップを埋め、連続した一連のデータを取得し、より包括的で正確なデータを提供できます。結果の表現

以上がヘルパー テーブルを使用して MySQL クエリの日付ギャップを埋めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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