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

如何在SQL Developer中获取正确的订单平均总金额?

订单平均总金额的正确计算方法

你现有SQL的问题

  • 第一条SQL:按priceeach分组,计算的是相同单价的明细项总金额的平均值,完全偏离了订单维度的统计逻辑,结果自然不对。
  • 第二条SQL:按CUSTOMERNUMBER分组后嵌套avg(AVG(...)),实际计算的是「每个客户的平均订单金额」的平均值,是客户层面的统计,而非所有订单的总金额平均值。

正确的SQL写法

要计算订单平均总金额,需先统计每个订单的总金额,再对所有订单的总金额求平均:

-- 基础版:直接基于订单明细计算每个订单的总金额,再求平均
SELECT AVG(order_total) AS avg_order_total
FROM (
    SELECT SUM(od.QUANTITYORDERED * od.PRICEEACH) AS order_total
    FROM ORDERDETAILS od
    GROUP BY od.ORDERNUMBER
) order_totals;

如果需要确保统计的是已存在于ORDERS表的有效订单(排除可能的孤立明细),可以关联ORDERS表:

-- 关联订单表的版本
SELECT AVG(order_total) AS avg_order_total
FROM (
    SELECT SUM(od.QUANTITYORDERED * od.PRICEEACH) AS order_total
    FROM ORDERDETAILS od
    JOIN ORDERS o ON od.ORDERNUMBER = o.ORDERNUMBER
    GROUP BY od.ORDERNUMBER
) order_totals;

逻辑说明

  1. 子查询中按ORDERNUMBER分组,计算每个订单的总金额(所有明细项的数量×单价之和)。
  2. 外层查询对所有订单的总金额求平均值,得到的就是真正的「订单平均总金额」。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:11:20