一定期間内の複数店舗の日々の営業状況を照会し、営業が0と記録されていない場合

すべての店舗情報を含む店舗テーブルがすでに存在する場合は、各店舗の名前を手動でリストすることなく、このテーブルをクエリで直接使用できます。クエリ ステートメントの例を次に示します。

SQL ステートメント:

SELECT 
  dates.order_date,
  stores.store_name,
  IFNULL(SUM(orders.amount), 0) AS total_amount
FROM (
  SELECT 
    DATE_ADD('2023-03-01', INTERVAL seq DAY) AS order_date
  FROM (
    SELECT 0 AS seq 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
  ) seq
  WHERE DATE_ADD('2023-03-01', INTERVAL seq DAY) BETWEEN '2023-03-01' AND '2023-03-08' -- 时间范围
) dates
CROSS JOIN stores
LEFT JOIN orders ON orders.order_date = dates.order_date AND orders.store_name = stores.store_name
GROUP BY dates.order_date, stores.store_name
ORDER BY dates.order_date, stores.store_name;

上記のクエリ ステートメントでは、CROSS JOIN 操作を使用して日付シーケンスと店舗テーブルを接続し、毎日対応する店舗名があることを確認します。次に、LEFT JOIN 操作を使用して日付シリーズとストア テーブルを注文テーブルと結合し、毎日に対応する注文レコードがあることを確認し、IFNULL 関数を使用して NULL 値を 0 に置き換えました。最後に、GROUP BY 句を使用して結果を日付と店舗名でグループ化し、日付と店舗名で昇順に並べ替えて、毎日の売上を取得します。
 

おすすめ

転載: blog.csdn.net/CSH__/article/details/129604672