为什么不能再where语句中使用聚合函数
2016-11-04 10:23
711 查看
1.问题描述
select deptno ,avg(sal) from emp where count(*)>3 group by deptno; 在where 句中使用聚合函数count(*),报出错误:ORA-00934: group function is not allowed here
那是为什么呢?
2.问题解决:
大致解释如下,sql语句的执行过程是:from-->where-->group by -->having --- >order by --> select;
聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误,
而having不一样,having是针对结果集做筛选的,所以我门一般吧组函数放在having中,用having来代替where,having一般跟在group by后
sql语句的执行过程是:from-->where-->group by -->having --- >order by --> select;
聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误,
而having不一样,having是针对结果集做筛选的,所以我门一般吧组函数放在having中,用having来代替where,having一般跟在group by后
代码:
[sql]
view plain
copy
print?
select deptno,avg(sal) from emp group by deptno having count(deptno)>3;
select deptno ,avg(sal) from emp where count(*)>3 group by deptno; 在where 句中使用聚合函数count(*),报出错误:ORA-00934: group function is not allowed here
那是为什么呢?
2.问题解决:
大致解释如下,sql语句的执行过程是:from-->where-->group by -->having --- >order by --> select;
聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误,
而having不一样,having是针对结果集做筛选的,所以我门一般吧组函数放在having中,用having来代替where,having一般跟在group by后
sql语句的执行过程是:from-->where-->group by -->having --- >order by --> select;
聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误,
而having不一样,having是针对结果集做筛选的,所以我门一般吧组函数放在having中,用having来代替where,having一般跟在group by后
代码:
[sql]
view plain
copy
print?
select deptno,avg(sal) from emp group by deptno having count(deptno)>3;
相关文章推荐
- 为什么不能再where语句中使用聚合函数
- SQL语句中,为什么where子句不能使用列别名,而order by却可以?
- SQL语句中,为什么where子句不能使用列别名,而order by却可以?
- where VS having 为什么不能再where子句中使用组函数(聚合函数)
- SQL语句中,为什么where子句不能使用列别名,而order by却可以?
- 微信公众号接口开发为什么不能使用循环语句?
- 聚合函数不能在where子句使用
- SQL中where语句不能使用直接跟在select后列的别名
- SQL语句中,WHERE子句不能有聚合函数问题
- Android library中为什么不能使用switch-case语句访问资源ID
- 为什么中断处理函数中不能使用printf语句
- sql语句学习笔记(10)-group by(因为该列没有包含在聚合函数或 GROUP BY 子句中。聚合函数不能出现在where中)
- 为什么super()和this()调用语句不能同时在一个构造函数中出现的解释
- 为什么Java中不能使用Double Checked Locking模式
- where子句中不能使用聚集函数
- 尽量避免在SQL语句的WHERE子句中使用函数
- jsp request,正确使用. 为什么不能使用 getAttribute 得到保存的数据
- 对于不能join的表,使用for all entries in语句将该表与内表串联。
- hibernate 为什么可以发出insert语句,却不能完全保存到数据库呢?
- 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句