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

使用SQL SUM与OVER语法计算总计及分组总计报错求助

解决你的SQL语法错误并实现需求

嘿,我帮你找出问题啦!你的SQL语句主要是语法格式错误,有两个关键问题导致了报错:

  • 两个窗口函数生成的列之间没有用逗号分隔,数据库无法识别这是两个独立的计算列
  • 第一个窗口函数被多余的括号包裹了,你把SUM(we200326) OVER () AS Total整个套在了括号里,这完全没必要,反而打乱了语法结构

修正后的SQL语句

SELECT 
  country, 
  we200326,
  SUM(we200326) OVER () AS Total,  -- 全局所有"1"的总数
  SUM(we200326) OVER (PARTITION BY country) AS CountryTotal  -- 按country分组的"1"总数
FROM table_name 
ORDER BY CountryTotal, country;

额外说明

因为你的we200326列只有"1"或NULL值,SUM()函数会自动将NULL视为0计算,所以直接对该列求和就能准确得到"1"的数量,这个逻辑是完全成立的。

如果想要更严谨(比如防止列中意外出现其他非"1"的字符串),可以用条件求和的写法,确保只统计值为"1"的行:

SELECT 
  country, 
  we200326,
  SUM(CASE WHEN we200326 = '1' THEN 1 ELSE 0 END) OVER () AS Total,
  SUM(CASE WHEN we200326 = '1' THEN 1 ELSE 0 END) OVER (PARTITION BY country) AS CountryTotal
FROM table_name 
ORDER BY CountryTotal, country;

内容的提问来源于stack exchange,提问作者J.K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:13:10