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

SQL查询特定用户投票时,全量投票统计未按POLL_ID分组的问题排查

SQL投票统计错误原因分析

你的查询存在两个核心问题,导致V1/V2/V3返回全表投票总和而非对应POLL_ID的统计值:

  • 缺少GROUP BY分组子句
    你使用了SUM()聚合函数,但未指定按POLL_ID分组。这会让数据库对整个查询结果集进行全局汇总,而非针对每个独立的投票项(POLL_ID)分别统计各选项的投票数。

  • JOIN操作引发的数据重复
    当你将筛选出指定用户投票的FILTERED_VOTES表,与包含所有投票的WHOLE_VOTES表通过POLL_ID关联时,会产生笛卡尔积效应:每个指定用户的投票记录,会与对应POLL_ID下的所有投票记录一一匹配。比如POLL_ID=1时,FILTERED_VOTES有1条记录,WHOLE_VOTES有2条记录,JOIN后会生成2条重复记录。缺少分组的情况下,SUM()会累加这些重复数据,进一步放大统计误差。

修正后的查询示例

先对所有投票按POLL_ID预统计各选项数量,再关联用户投票和投票内容表,避免数据重复:

SELECT
    p.POLL_ID,
    p.CONTENT,
    fv.VOTE,
    wv.V1,
    wv.V2,
    wv.V3
FROM POLLS p
JOIN VOTES fv ON p.POLL_ID = fv.POLL_ID AND fv.USER_ID = 'U1'
JOIN (
    SELECT
        POLL_ID,
        SUM(VOTE = 1) AS V1,
        SUM(VOTE = 2) AS V2,
        SUM(VOTE = 3) AS V3
    FROM VOTES
    GROUP BY POLL_ID
) wv ON p.POLL_ID = wv.POLL_ID;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:20:29