为什么不能再where语句中使用聚合函数
来源:互联网 发布:c语言面向对象 编辑:程序博客网 时间:2024/06/06 06:32
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后
聚合函数是针对结果集进行的,但是where条件并不是在查询出结果集之后运行,所以主函数放在where语句中,会出现错误,
而having不一样,having是针对结果集做筛选的,所以我门一般吧组函数放在having中,用having来代替where,having一般跟在group by后
代码:
- select deptno,avg(sal) from emp group by deptno having count(deptno)>3;
1 0
- 为什么不能再where语句中使用聚合函数
- 为什么不能再where语句中使用聚合函数
- where VS having 为什么不能再where子句中使用组函数(聚合函数)
- SQL语句中,WHERE子句不能有聚合函数问题
- 聚合函数不能在where子句使用
- sql语句学习笔记(10)-group by(因为该列没有包含在聚合函数或 GROUP BY 子句中。聚合函数不能出现在where中)
- SQL语句中,为什么where子句不能使用列别名,而order by却可以?
- SQL语句中,为什么where子句不能使用列别名,而order by却可以?
- SQL语句中,为什么where子句不能使用列别名,而order by却可以?
- 为什么中断处理函数中不能使用printf语句
- 不应该在where子句中使用聚合函数
- 为什么聚集函数不能出现在where子句中
- SQL中关于where后面不能放聚合函数(如sum等)的解决办法
- SQL中关于where后面不能放聚合函数(如sum等)的解决办法
- 在一个TSQL语句中多次使用Count聚合函数
- 为什么不能在构造函数中使用虚函数
- Oracle中使用聚合函数
- 尽量避免在SQL语句的WHERE子句中使用函数
- 第九周 对称矩阵压缩存储的实现和应用
- CUDA学习笔记之随机数
- 关于Spynner以及browser类---怎样解析动态网页
- Java设计模式——线程安全的单件模式
- android 弹窗黑边规避,代码自定义布局不用
- 为什么不能再where语句中使用聚合函数
- android屏幕单位
- 3、spring入门—Spring Bean的装配(上)
- C#发送邮件
- javascript事件的三个阶段
- Iterable<T>和Iterator<E>
- LDA-隐狄利克雷分布-主题模型
- centos7 配置多个Tomcat
- 一起来写web server 08 -- 多线程+非阻塞IO+epoll