八、分组函数/聚合函数/双行处理函数
来源:互联网 发布:c语言如何输入n个整数 编辑:程序博客网 时间:2024/06/05 20:49
函数
分组函数不能直接使用在where关键字后面。
mysql> select ename, sal from emp where max(sal) < sal; ERROR 1111 (HY000): Invalid(无效) use of group function
去除重复记录
select distinct deptno,job from emp;
distinct只能出现在所有字段前方
分组查询
- 分组查询两个子句:
group by、 having
mysql> select ename,job, max(sal) from emp group by job;
在mysql中可以,但是没有实际意义。在Oracle中不可以,语法报错。
重点:
若一条DQL语句当中有group by子句,那么select关键字后面只能跟参与分组的字段和分组函数。
select job, max(sal) from emp where job != 'MANAGER' group by job;
where条件得在group by的前面。先得去除不等于MAMAGER的,然后在进行分组。
select job, avg(sal) from emp where avg(sal) > 1500 group by job; select job, avg(sal) from emp group by job having avg(sal) > 1500;
重点:
where关键字后面不能直接使用分组函数。
分组函数必须在分组完成后执行,而分组需要group by,而group by在where后面执行。
having和where功能都是为了完成数据的过滤。
where和having后面都是添加条件。
where在group by之前完成过滤。
having在group by之后完成过滤
原则:
尽量在where中过滤,无法过滤的数据,通常是需要先分组子后在过滤的,这个时候可以选择使用having。
完整的DQL语句的总结:
select ... from ...where ...group by ...having ...order by...
说明:
1. 书写顺序不能改变
2. having不能单独使用,必须和group by连用
3. 执行顺序:
3.1 from 从某张表中检索数据
3.2 where 经过某个条件进行筛选
3.3 group by 分组
3.4 having 分组之后在筛选
3.5 select 查询列
3.6 order by 排序输出
0 0
- 八、分组函数/聚合函数/双行处理函数
- 十三、Mysql 分组函数/聚合函数/多行处理函数
- 聚合函数与分组
- 分组和聚合函数
- 聚合函数与分组
- 聚合函数与分组
- 聚合函数与分组
- 聚合函数与分组
- 聚合函数与分组
- SQL基础(一八)--- 数据分组与聚合函数
- 组函数(聚合函数),分组函数
- 6.聚合函数与分组
- 数据分组与聚合函数
- mysql聚合函数和分组
- mysql分组查询聚合函数
- 聚合函数与分组1
- Hibernate-分组查询、聚合函数
- Mysql分组以及聚合函数
- Hibernate 学习教程
- 十五、Mysql 分组查询
- C. Functions again-最长连续子序列
- 浏览器拦截跨域请求处理方法(同源策略不允许读取服务器远程资源)
- [数据库学习SQLSERVER] 学习笔记
- 八、分组函数/聚合函数/双行处理函数
- 关于zxing扫码界面的优化
- 148. Sort List
- 521. Longest Uncommon Subsequence I
- 利用Python解析Excel文件
- 如何在个人博客中插入Jsbin或者jsfiddle代码
- 快速排序
- ubuntu下解决端口被占用问题
- Android 性能:避免在Android上使用ENUM