MySQL クエリのデータ ギャップを埋める方法
この質問では、MySQL 間でクエリを実行するときにデータ ギャップが発生する可能性がある、MySQL の一般的な問題について説明します。特定の日付。ユーザーの既存のクエリは日付ベースのメトリックを取得しますが、欠落している日付のデータは含まれません。
ダミー行ソースを使用してデータ ギャップを埋める
データ ギャップを埋めるには、解決策には、「dates」という名前のヘルパー テーブルを作成することが含まれます。このテーブルには、必要な開始範囲から終了範囲までのすべての日付が含まれています。次に、日付テーブルとメッセージ テーブルの間で LEFT JOIN が実行されます。
変更されたクエリは次のとおりです:
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
説明:
ダミー行ソースを使用する代替方法
MySQL には、日付のシーケンスを生成するための組み込み関数がないという点で独特です。ただし、他のデータベース システムでは、代替アプローチがいくつか利用できます。
以上がMySQL クエリで欠落している日付を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。