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

SQL Server 按Price分组并对同组Amount求和实现方法咨询

实现思路
  • 首先需求里的「分组内第一条数据」默认按Id升序取最小Id对应的记录,和你给出的样例输出规则完全匹配
  • 核心逻辑分两步:先对每个Price分组计算Amount总和,再取每个分组内排序第一的Id和对应Type即可,SQL Server支持用窗口函数高效实现该需求,无需多次关联表
可用SQL写法
WITH GroupedData AS (
    SELECT 
        Id,
        Type,
        Price,
        SUM(Amount) OVER (PARTITION BY Price) AS TotalAmount,
        ROW_NUMBER() OVER (PARTITION BY Price ORDER BY Id ASC) AS RowNum
    FROM 你的实际表名 -- 替换成你自己的数据表名称即可
)
SELECT 
    Id,
    Type,
    Price,
    TotalAmount AS Amount
FROM GroupedData
WHERE RowNum = 1
逻辑说明
  • CTE中先用SUM() OVER(PARTITION BY Price)计算每个相同Price对应的Amount总和,同一个Price分组的所有行都会得到相同的总和值
  • 再用ROW_NUMBER() OVER(PARTITION BY Price ORDER BY Id ASC)给同一个Price分组的行按Id从小到大排序,最小Id对应的行序号就是1
  • 最后过滤出行序号为1的记录,就是你需要的每个分组取首条Id+Type+对应总和的结果
  • 如果你的「第一条」判断规则不是按Id升序,只需要修改ORDER BY后面的排序规则即可适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:36:03