撩课-Mysql第6部分组查询

学习地址:
撩课-JavaWeb系列1之基础语法-前端基础
撩课-JavaWeb系列2之XML
撩课-JavaWeb系列3之MySQL
撩课-JavaWeb系列4之JDBC
撩课-JavaWeb系列5之web服务器-idea
下载地址:
https://pan.baidu.com/s/1qilY0kIpgnxuLELxjNIQxw 提取码:4s9t

分组查询

什么是分组查询
将查询结果按照1个或多个字段进行分组,字段值相同的为一组
分组使用

SELECT gender from employee GROUP BY gender;
根据gender字段来分组,
gender字段的全部值只有两个('男'和'女'),
所以分为了两组
当group by单独使用时,只显示出每组的第一条记录
所以group by单独使用时的实际意义不大

分组注意事项

在使用分组时,
select后面直接跟的字段
一般都出现在group by 后
group by + group_concat()
group_concat(字段名)
可以作为一个输出字段来使用
表示分组之后,根据分组结果,
使用group_concat()来放置
每一组的某字段的值的集合

SELECT gender,GROUP_CONCAT(name) from employee GROUP BY gender;

group by + 聚合函数

 通过group_concat()的启发,
我们既然可以统计出每个分组的某字段的值的集合,
那么我们也可以通过集合函数
来对这个"值的集合"做一些操作

查询每个部门的部门名称和每个部门的工资和
SELECT department,SUM(salary) FROM employee GROUP BY department;
查询每个部门的部门名称以及每个部门的人数
SELECT department,COUNT(*) FROM employee GROUP BY department;
查询每个部门的部门名称以及每个部门工资大于1500的人数
SELECT department,COUNT(salary) FROM employee WHERE salary > 1500 GROUP BY department;

group by + having

用来分组查询后指定一些条件来输出查询结果
having作用和where一样,但having只能用于group by
查询工资总和大于9000的部门名称以及工资和

查询每个部分的工资总和
SELECT department,GROUP_CONCAT(salary) FROM employee GROUP BY department;
SELECT department,SUM(salary) FROM employee GROUP BY department;
总和大于9000
SELECT department,SUM(salary) FROM employee GROUP BY department HAVING SUM(salary)>9000;

having与where的区别

having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
having后面可以使用分组函数(统计函数)
where后面不可以使用分组函数
WHERE是对分组前记录的条件,
如果某行记录没有满足WHERE子句的条件,
那么这行记录不会参加分组;
而HAVING是对分组后数据的约束。

查询工资大于2000的
SELECT * FROM employee WHERE salary >2000;
各部门工资
SELECT department, GROUP_CONCAT(salary) FROM employee WHERE salary >2000 GROUP BY department;
各部门工资总和
SELECT department, SUM(salary) FROM employee WHERE salary >2000 GROUP BY department;
各部门工资总和大于6000
SELECT department, SUM(salary) FROM employee WHERE salary >2000 GROUP BY department HAVING SUM(salary)>6000;
各部门工资总和大于6000降序排列

SELECT department, SUM(salary) FROM employee WHERE salary >2000 GROUP BY department HAVING SUM(salary)>6000 
ORDER BY SUM(salary) DESC;

书写顺序

执行顺序

猜你喜欢

转载自blog.csdn.net/lkitlike/article/details/84936513