本文整理自网络,侵删。
目录
- 1.分组查询的原理图
- 2.groupby关键字语法详解
- 3.一个简单的分组查询的案例
- 4.分组前筛选和分组后筛选
- 1)原始表和结果集的概念
- 2)黄同学支大招
- 3)案例讲解
- 5.分组查询(按函数分组)
- 6.分组查询(按多个字段分组)
- 7.groupby和orderby,一对老搭档
- 8.分组查询的总结
1.分组查询的原理图
对上述原始数据,按照DEPARTMENT_ID
(员工id)分组统计SALARY
(薪水)的平均值。
上述原理写成代码,应该怎么写呢?
select department_id,avg(salary) from test group by department_id;
可以清楚地看到,使用department_id
进行分组后,系统默认将department_id
相同的号所在的行,分配在一起,你有几个不同的department_id
,就会分为几组,每个组中的数据行数,不一定都要相同。
当自动分配完成后,会根据你所写的分组函数,进行组内运算。
也就是说,你使用的是sum()
函数,就会组内求和;当你使用的是avg()
函数,就会组内求平均值;当你使用的是count()
函数,就会进行组内计数;当你使用的是max()
函数,就会进行组内求最大值;你使用的是min()
函数,就会进行组内求最小值。
2.group by关键字语法详解
有些小白在学习MySQL的过程中,很多都是在group by
关键字这个地方卡壳。于是我希望自己能够用白话图文的方式,让你真正搞明白这个关键字的含义。
group by
是用于分组查询的关键字,一般是配合sum(),avg(),count(),max(),min()
聚合函数使用的。也就是说SQL语句中只要有group by
,那么在select后面的展示字段中一般会有聚合函数(5个聚合函数)中的一个或多个函数出现。观察上图,有一点你需要记住,你用表中的字段A进行分组后,一般就需要对表中的其它字段,使用聚合函数,这样意义更大,而不是还对字段A使用聚合函数,没啥太大意义。
我们再思考下面这个问题!
当SQL语句中使用了group by后,在select后面一定有一个字段使用了聚合函数(5个聚合函数)。但是除了这个聚合函数,select后面还可以添加其他什么字段吗?
答案肯定是可以的!但是该字段有一定的限制,并不是什么字段都可以。也就是说,当SQL语句中使用了group by
关键字后,select后面除了聚合函数,就只能是group by
后面出现的字段。也就是图中的字段A,select后面只能存在group by
后面的字段。
3.一个简单的分组查询的案例
案例 :按照部门编号deptno分组,统计每个部门的平均工资。
select deptno,avg(sal) avgs from emp group by deptno
结果如下:
相关阅读 >>
更多相关阅读请进入《mysql》频道 >>

数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » MySQL初学者可以告别分组聚合查询的困扰了
相关推荐
评论
管理员已关闭评论功能...