You need to enable JavaScript to run this app. Spark SQL在GROUP BY后使用WHERE子句报错该如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

Spark SQL在GROUP BY后使用WHERE子句报错该如何解决?

问题原因

SQL语法中过滤条件的位置有严格要求:

  • WHERE 子句用来筛选分组前的原始数据,必须写在 GROUP BY 之前
  • 分组聚合之后的结果筛选,必须使用 HAVING 子句,写在 GROUP BY 之后

你把针对聚合结果count的过滤条件用WHERE写在了GROUP BY后面,不符合Spark SQL语法规范,因此触发语法错误。

正确解法

不需要分两次查询创建中间视图,直接将WHERE替换为HAVING即可,单句SQL就能实现需求:

SELECT `col-a`, `col-b`, count(DISTINCT (`col-c`, `col-d`, `col-e`)) AS count 
FROM df 
GROUP BY `col-a`, `col-b` 
HAVING count > 1

直接执行以上语句即可得到符合要求的筛选结果。

内容的提问来源于stack exchange,提问作者Muhammad Raihan Muhaimin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 17:24:01