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
相关产品推荐
相关产品推荐

