ホームページ > データベース > mysql チュートリアル > MySQL でトランザクションのない日を含む、過去 7 日間のトランザクション データを取得するにはどうすればよいですか?

MySQL でトランザクションのない日を含む、過去 7 日間のトランザクション データを取得するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-31 14:38:10
オリジナル
879 人が閲覧しました

How to Retrieve Transaction Data for the Last 7 Days, Including Days with No Transactions in MySQL?

単一テーブル内の空の行を含む、過去 7 日間の行の選択

MySQL データベースで、トランザクションを取得したいとします。過去 7 日間の売上高を毎日計算します。ただし、特定の日に利用可能なデータがない場合でも、空の行が結果セットに含まれるようにしたいと考えています。

この問題に対処しようとしましたが、クエリでは次の日のみが取得されます。取引。望ましい結果を達成するには、アプローチを変更する必要があります。

解決策:

この解決策には、サブクエリを利用して過去 7 日間の日付のリストを生成することが含まれます。 。次に、このリストはトランザクション テーブルと結合されたままになり、包括的な結果セットが作成されます。

  1. 日付リストの生成:
SELECT DATE_FORMAT(a.Date,'%Y-%m-%d') as purchase_date,
'0' as  amount
FROM (
    SELECT curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
    FROM (SELECT 0 as a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) as a
    CROSS JOIN (SELECT 0 as a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) as b
    CROSS JOIN (SELECT 0 as a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) as c
) a
WHERE a.Date BETWEEN NOW() - INTERVAL 7 DAY AND NOW()
ログイン後にコピー
  1. トランザクションに参加するテーブル:
LEFT JOIN
(
  SELECT DATE_FORMAT(purchase_date, '%Y-%m-%d') as purchase_date,
  coalesce(SUM(amount), 0) AS amount
  FROM transactions
  WHERE purchase_date BETWEEN NOW() - INTERVAL 7 DAY AND NOW()
  AND vendor_id = 0
  GROUP BY purchase_date
)t2
ON t2.purchase_date = t1.purchase_date
ログイン後にコピー
  1. グループ化と順序付けの結果:
GROUP BY t1.purchase_date
ORDER BY t1.purchase_date DESC
ログイン後にコピー

このクエリは、生成された日とトランザクション テーブルに、トランザクションのない日でも空の行が含まれるようにします。最終的な結果セットには、過去 7 日間の購入日と総販売額が表示されます。空の行は、その日に取引がなかったことを示します。

以上がMySQL でトランザクションのない日を含む、過去 7 日間のトランザクション データを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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