-- 员工表
CREATE TABLE t_employee(
id INT PRIMARY KEY AUTO_INCREMENT,
employeeName VARCHAR(20),
money INT,
deptName VARCHAR(20)
)CHARSET=utf8;
//添加数条信息
SELECT *FROM t_employee;
-- 分组,统计每个部门有多少人SELECT deptName,COUNT(*)num FROM t_employee GROUP BY deptName;
-- 在分组查询中,查询字段只能是聚合函数和分组函数
SELECT MAX(money) ,deptName,employeeName FROM t_employee GROUP BY deptName;
-- 统计各部门工资在5000以下的人数
SELECT deptName,COUNT(money) FROM t_employee WHERE money<5000 GROUP BY deptName;
-- 统计各部门的平均工资
SELECT deptName,AVG(money) FROM t_employee e GROUP BY e.deptName;
-- 统计各部门的平均工资在3000以上的部门
-- having 是对分组的结果再进行过滤。所以having条件中可以加入聚合函数
SELECT deptName,AVG(money)FROM t_employee e GROUP BY deptName HAVING AVG(money)>3000;
-- 统计每个部门中工资在4000以上的部门人数
SELECT deptName,COUNT(*) FROM t_employee WHERE money>=4000 GROUP BY deptName
-- 查询部门人数至少是两个的部门
SELECT deptName,COUNT(deptName) FROM t_employee GROUP BY deptName HAVING COUNT(deptName)>=2;
-- SQL执行顺序
-- 按部门平均工资降序显示部门
SELECT deptName,AVG(money) FROM t_employee GROUP BY deptName ORDER BY AVG(money) DESC;