mysql数据库group by和having的使用
2020-06-06 本文已影响0人
python小哥哥2020
大家好,我是天空之城,今天给大家带来mysql数据库group by和having的使用。
group by表示按一定规则对数据进行分组,比如公司想知道每个部门男女员工的人数,班主任想统计各科第一名的成绩。必须配合聚合函数进行使用,如count,sum,avg,max,min,对一列或多列进行分组。
建表链接https://blog.csdn.net/littlespider889/article/details/106560626
#group by语法
SELECT column_ name, aggregate function(column name)
FROM table name
GROUP BY column name
在SQL中增加HAVING子句原因是, WHERE关键字无法与聚合函数一起使用(where对分组前数据进行过滤)。HAVING 子句可以对分组后的各组数据进行筛选。
#having语法
SELECT column_ name, aggregate_ function(column_ name)
FROM table_ name
WHERE column name operator value
GROUP BY column name
HAVING aggregate function(column_ name) operator value
还是用employee表进行练习
select sex, count(*) from employee group by sex;
显示男员工8人,女员工5人
男 8
女 5
按照部门进行人员统计
select dept, count(*) from employee group by dept;
部门A 5
部门C 3
部门B 5
统计各个部门的工资总和
select dept, sum(salary) from employee group by dept;
统计各个部门的工资最高的
select dept, max(salary) from employee group by dept;
部门A 8500
部门C 10000
部门B 12000
统计各个部门的工资最低的
select dept, min(salary) from employee group by dept;
部门A 4200
部门C 4500
部门B 3500
select后面除了分组字段外只能说聚合函数
having用法
找出部门人数小于5个的那个部门
select dept, count(*) from employee group by dept having count(*)<5;
部门C 3
找出部门最高薪资过万的那个部门
select dept, max(salary) from employee group by dept having max(salary)>10000;
部门B 12000