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

同一订单多行显示相同总金额,如何按唯一ORDER ID统计?

解决按唯一订单ID统计餐厅总金额的问题

问题核心是你的数据集里同一订单对应多行记录,原查询直接按Restaurant_ID分组,会把同一订单的Total_with_VAT重复累加,导致统计结果偏大。要修正这个问题,必须先按唯一订单ID去重,再按餐厅汇总。

修改后的SQL查询

假设你的表中唯一订单ID字段名为Order_ID(如果实际字段名不同,替换成对应名称即可):

SELECT
  Restaurant_ID,
  ROUND(SUM(Order_Total), 2) AS Total_With_VAT
FROM (
  -- 先获取每个唯一订单的总金额(同一订单的多行记录取一次值即可)
  SELECT
    Restaurant_ID,
    Order_ID,
    -- 同一订单的Total__with_VAT_值应一致,用MAX避免重复计算
    MAX(Total__with_VAT_) AS Order_Total
  FROM rest.totals
  GROUP BY Restaurant_ID, Order_ID
) AS order_level_totals
GROUP BY Restaurant_ID
ORDER BY Total_With_VAT DESC;

原查询无效的原因

  • 原查询直接按Restaurant_ID分组,同一订单的多行记录会多次计入SUM(Total__with_VAT_),相当于把单个订单的金额重复累加了N次(N为该订单的行数)。
  • 你尝试的子查询依然是按Restaurant_ID分组,未处理订单维度的重复,所以结果和原查询完全一致。

补充场景说明

如果Total__with_VAT_是订单每行的分项金额(而非整个订单的总金额),子查询里需用SUM计算单个订单的总金额,再在外层按餐厅汇总:

SELECT
  Restaurant_ID,
  ROUND(SUM(Order_Total), 2) AS Total_With_VAT
FROM (
  SELECT
    Restaurant_ID,
    Order_ID,
    SUM(Total__with_VAT_) AS Order_Total
  FROM rest.totals
  GROUP BY Restaurant_ID, Order_ID
) AS order_level_totals
GROUP BY Restaurant_ID
ORDER BY Total_With_VAT DESC;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:42:09