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

SQLite:如何按Item列求和Price并保留对应Tag行的实现问题

正确SQL实现:按Item汇总Price并对应所有Tag行

原始表(TableQ)

ItemPriceTag
Item A2X
Item A4Y
Item B1Z

期望输出

ItemPriceTag
Item A6X
Item A6Y
Item B1Z

问题分析

你之前的SQL错误在于:子查询未按Item分组,也没有添加主表与子查询的关联条件,导致子查询计算的是全局Price总和(2+4+1=7),左连接后所有行都匹配这个全局值,不符合需求。

正确实现方案

方案1:使用窗口函数(推荐,简洁高效)

窗口函数可以直接按Item分组计算总价,同时保留原表的每一行数据:

SELECT 
    Item,
    SUM(Price) OVER (PARTITION BY Item) AS Price,
    Tag
FROM TableQ;

PARTITION BY Item指定按Item分组计算总和,OVER子句保证每一行都能获取到对应分组的总价。

方案2:使用关联子查询(兼容旧版数据库)

先通过子查询预计算每个Item的总价,再通过Item字段关联主表,将总价映射到每一行:

SELECT 
    Q1.Item,
    Q2.PriceSum AS Price,
    Q1.Tag
FROM TableQ Q1
INNER JOIN (
    SELECT Item, SUM(Price) AS PriceSum
    FROM TableQ
    GROUP BY Item
) Q2 ON Q1.Item = Q2.Item;

子查询通过GROUP BY Item得到每个Item的总价,再通过ON Q1.Item = Q2.Item将主表的每一行与对应Item的总价关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:27:18