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

如何编写SQL查询获取订单平均包含的商品数量?

问题背景

现有Order_item表结构及数据如下:

Order-iditem-id
145
445
457
568
532
668

需要计算平均每个订单包含的商品数量,手动计算结果为6个商品 ÷ 4个订单 = 1.5个商品/订单。

已尝试的SQL查询:

select count(item-id), order-id from order_item group by order-id

得到结果:

Order-idcount
11
42
52
61

解决方法

有两种直接得到结果的SQL写法:

方法1:直接计算总商品数与唯一订单数的比值

这种方式更高效,无需嵌套子查询:

SELECT COUNT(item_id) / COUNT(DISTINCT order_id) AS avg_items_per_order
FROM order_item;
  • COUNT(item_id):统计所有商品的总数量(共6条记录,对应6个商品)
  • COUNT(DISTINCT order_id):统计唯一的订单数量(共4个订单)
  • 两者相除得到平均每个订单的商品数,结果为1.5

方法2:基于分组结果求平均值

利用你已写好的分组查询作为子查询,对每个订单的商品数求平均:

SELECT AVG(item_count) AS avg_items_per_order
FROM (
    SELECT COUNT(item_id) AS item_count
    FROM order_item
    GROUP BY order_id
) AS order_item_counts;
  • 子查询先统计每个订单的商品数量,得到你之前的分组结果
  • 外层查询用AVG()函数对这些商品数求平均,最终得到1.5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:30:52