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

SQLite中SUM聚合函数计算结果异常问题求助

问题原因及解决办法

你的问题出在JOIN操作导致数据行重复,进而让SUM计算重复累加了酸奶产量值。

举个例子:假设某州在yogurt_production里只有1条2022年的产量数据(比如值为100),但在cheese_production里同州同年份有3条数据。JOIN之后,这条酸奶数据会被复制3条和奶酪数据匹配,SUM的时候就会把100加3次,最终得到300,而不是真实的100。

解决办法分两种情况:

情况1:只需要计算酸奶总产量(不需要奶酪数据)

直接去掉多余的JOIN,只查询酸奶表即可:

SELECT
    SUM(yp.Value) AS total_yogurtprod,
    yp.Year
FROM yogurt_production yp
WHERE yp.Year = 2022

情况2:确实需要关联奶酪表(比如要同时获取奶酪相关数据)

先对酸奶表按州和年份聚合求和,再关联奶酪表,避免重复计算:

SELECT
    yp_agg.total_yogurtprod,
    yp_agg.Year
FROM (
    -- 先计算每个州的酸奶产量,再关联
    SELECT
        SUM(Value) AS total_yogurtprod,
        Year,
        State_ANSI
    FROM yogurt_production
    WHERE Year = 2022
    GROUP BY Year, State_ANSI
) yp_agg
JOIN cheese_production cp 
ON yp_agg.State_ANSI = cp.State_ANSI 
WHERE cp.Year = 2022

如果需要的是全国范围内的酸奶总产量,子查询里可以去掉State_ANSI的分组:

SELECT
    yp_agg.total_yogurtprod,
    yp_agg.Year
FROM (
    SELECT
        SUM(Value) AS total_yogurtprod,
        Year
    FROM yogurt_production
    WHERE Year = 2022
) yp_agg
JOIN cheese_production cp 
ON yp_agg.Year = cp.Year 
WHERE cp.Year = 2022

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:02:21