大家好,又见面了,我是你们的朋友全栈君。
一般在书写sql的是时候很多时候会误将聚合函数放到where后面作为条件查询,事实证明这样是无法执行的,执行会报【此处不允许使用聚合函数】异常。为什么会报异常呢?其原因很简单:
- having放在group by 的后面
- group by 后面只能放非聚合函数的列
- where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
- having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
那聚合函数在什么情况下使用或者应该处在sql文中的哪个位置呢
聚合函数只能在以下位置作为表达式使用:
- select 语句的选择列表(子查询或外部查询);
- compute 或 compute by 子句;
- having 子句;
其实在诸多实际运用中,聚合函数更多的是辅助group by 使用,但是只要我们牢记where的作用对象只是行,只是用来过滤数据作为条件使用。
常见的几个聚合函数
- 求个数:count
- 求总和:sum
- 求最大值:max
- 求最小值:min
- 求平均值:avg
当然还有其他类型的聚合函数,可能随着对应sql server不同,支持的种类也不一样。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151857.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...