You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改SQL查询以获取各门店自2019年初以来的销售总额?

解决多门店年初至今销售总额查询问题

你的问题很典型——原来的查询因为加了branch_id like '%London%'的过滤条件,只会返回伦敦门店的数据,而且还缺少分组逻辑,导致无法按门店单独计算总额。咱们一步步修改:

核心问题分析

  • 过滤条件限制:WHERE branch_id like '%London%'会把所有非伦敦的门店数据排除在外,这就是你看不到曼彻斯特、加的夫等门店结果的直接原因。
  • 缺少分组聚合:没有GROUP BY子句的话,SUM(cost_order)会把所有符合条件的行(伦敦门店的所有订单)加总成一个单一值,而不是按每个门店分别计算总额。

修改后的查询语句

SELECT branch_id, SUM(cost_order) AS total_sales_since_2019
FROM Customer_Orders
WHERE date_sale >= '2019-01-01'
GROUP BY branch_id;

关键修改点说明

  1. 移除门店过滤条件:删掉branch_id like '%London%',让查询覆盖数据库中所有门店的订单数据。
  2. 添加GROUP BY branch_id:这是按门店分组的核心,确保SUM(cost_order)会针对每个branch_id单独计算累计销售额,每个门店返回一行独立结果。
  3. 添加列别名:给SUM(cost_order)起了total_sales_since_2019的别名,让查询结果的列名更清晰易懂。
  4. 移除多余的date_sale字段:原来的查询中date_sale放在SELECT里没有实际意义——我们要的是累计总额,不是单条订单的日期。如果保留它,要么会触发SQL语法错误(比如开启了ONLY_FULL_GROUP_BY模式的数据库),要么会返回随机的订单日期,这不是你需要的结果。

可选扩展:显示统计时间范围

如果你想在结果中明确展示统计的时间区间,可以调整查询如下:

SELECT 
    branch_id,
    '2019-01-01' AS period_start_date,
    MAX(date_sale) AS latest_sale_date,
    SUM(cost_order) AS total_sales_since_2019
FROM Customer_Orders
WHERE date_sale >= '2019-01-01'
GROUP BY branch_id;

这个版本会额外显示统计的起始日期和该门店的最新销售日期,让结果信息更完整。

内容的提问来源于stack exchange,提问作者Josh Walls

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:03:13