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

如何在SQL中为相同no_btsc的price列求和并作为新列?

解决方案

你原来的SQL报错是因为子查询(select SUM(price) from table1 group by no_btsc)会返回多行结果,无法和主查询的每行一一匹配。可以用以下两种方法实现需求:

方法一:使用窗口函数(推荐)

如果你的数据库支持窗口函数(如MySQL 8.0+、PostgreSQL、SQL Server等),这是最简洁的写法:

SELECT 
    id, 
    name, 
    price, 
    no_btsc,
    SUM(price) OVER (PARTITION BY no_btsc) AS total_price_by_btsc
FROM table1;

PARTITION BY no_btsc会将数据按no_btsc分组,然后对每组计算price的总和,最终每行都会显示对应组的总和。

方法二:使用关联子查询

如果你的数据库不支持窗口函数,可以用带关联条件的子查询:

SELECT 
    t1.id, 
    t1.name, 
    t1.price, 
    t1.no_btsc,
    (SELECT SUM(t2.price) FROM table1 t2 WHERE t2.no_btsc = t1.no_btsc) AS total_price_by_btsc
FROM table1 t1;

这里子查询通过WHERE t2.no_btsc = t1.no_btsc和主查询关联,确保每个主查询行都能获取到对应no_btsc的price总和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:42:02