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

如何使用GROUP BY查询商品首次订单的总Quantity?

解决方案

要实现获取每个商品首次订单的总Quantity,核心是先筛选出每个商品的首单记录,再对这些记录的Quantity求和。以下提供两种常用的实现方式:

方法一:子查询关联筛选

先通过子查询得到每个商品的首个订单号,再关联原表仅保留该订单的记录,最后分组求和:

SELECT 
    o.Item, 
    o.Order#, 
    SUM(o.Quantity) AS Quantity
FROM orders o
INNER JOIN (
    -- 子查询获取每个商品的首个订单号
    SELECT Item, MIN(Order#) AS FirstOrder
    FROM orders
    GROUP BY Item
) f 
    ON o.Item = f.Item 
    AND o.Order# = f.FirstOrder
GROUP BY o.Item, o.Order#

方法二:窗口函数标记首单

使用ROW_NUMBER()窗口函数为每个商品的订单按订单号排序,标记出首单的记录,再过滤后求和:

WITH ranked_orders AS (
    SELECT 
        Item, 
        Order#, 
        Quantity,
        -- 按商品分组,订单号升序排序,首单标记为1
        ROW_NUMBER() OVER (PARTITION BY Item ORDER BY Order#) AS rn
    FROM orders
)
SELECT 
    Item, 
    Order#, 
    SUM(Quantity) AS Quantity
FROM ranked_orders
WHERE rn = 1 -- 仅保留首单记录
GROUP BY Item, Order#

原查询问题说明

你之前的查询中,GROUP BY Item会将该商品的所有订单记录聚合在一起,MIN(Order#)能正确取到首单,但SUM(Quantity)会计算该商品所有订单的数量总和,而非仅首单的数量,因此需要先筛选出首单的记录再求和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:47:10