执行SQL查询报Invalid use of group function错误问题咨询
问题根因
- 报错的核心原因是聚合函数的使用位置不符合SQL执行逻辑:
SUM()属于分组聚合函数,它的计算依赖GROUP BY分组后的结果集,执行顺序晚于WHERE子句。你当前把SUM(BILLED_AMOUNT)= 0写在了WHERE条件中,而WHERE子句是对分组前的原始行做过滤,此时聚合计算还未执行,数据库无法识别该聚合判断条件,因此触发Invalid use of group function报错。
修正方案
将聚合函数的过滤条件从WHERE子句移动到GROUP BY后的HAVING子句中即可,修正后的SQL语句如下:
select count(*) as data, LOCATION_Name as location from SPECIAL_PROCEDURE_COLLECTION_FINAL_temp_final where sno>=6973 and sno<= 7251 and date(PAYMENT_DATE) = '2021-07-31' and Procedures_Category IN ('FFA-VR') group by LOCATION_Name having SUM(BILLED_AMOUNT)= 0
- 补充说明:HAVING子句的执行时机在分组聚合计算之后,专门用于对聚合后的结果做条件过滤,可以正常使用SUM、COUNT等聚合函数做判断。
内容的提问来源于stack exchange,提问作者Atul
相关产品推荐
相关产品推荐

