すべての店舗情報を含む店舗テーブルがすでに存在する場合は、各店舗の名前を手動でリストすることなく、このテーブルをクエリで直接使用できます。クエリ ステートメントの例を次に示します。
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 句を使用して結果を日付と店舗名でグループ化し、日付と店舗名で昇順に並べ替えて、毎日の売上を取得します。