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

PostgreSQL查询报INTERSECT语法错误,请求协助修复

问题排查与修复

错误原因分析

你的SQL语句存在多处语法逻辑错误:

  • INTERSECT是集合操作符,用于合并两个独立查询的结果集,不能放在窗口函数的OVER()子句内部,这是导致语法报错的直接原因。
  • select("col_name")是完全错误的语法,PostgreSQL没有这种写法。
  • All("col_name")不是窗口函数的正确用法,全局聚合应该用OVER ()(不指定分区就是全局范围)。

从你的逻辑推测,你应该是想实现:按col_name分组计算总和,再除以该字段的全局总和,若比例超过0.1则保留原col_name值,否则显示Other。

修复后的SQL语句

SELECT *,
       CASE 
         WHEN (SUM("col_name") OVER (PARTITION BY "col_name") / SUM("col_name") OVER ()) > 0.1 
         THEN "col_name" 
         ELSE 'Other' 
       END AS grouped_col_name
FROM #table# AS "table";

代码解释

  • SUM("col_name") OVER (PARTITION BY "col_name"):按col_name字段分组,计算每个分组的col_name总和。
  • SUM("col_name") OVER ():计算整个表中col_name的全局总和(不指定分区,默认覆盖全表)。
  • CASE语句:对比分组总和与全局总和的比例,按规则返回对应值,同时给这个计算字段命名为grouped_col_name方便引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:45:27