【MySQL】分组GROUP BY

1.GROUP BY分组使用

例:求员工表中各部门的平均工资
image

使用GROUP BY子句将数据按部门分

SELECT 
	department_id,AVG(salary)
FROM employees
GROUP BY department_id;

SELECT 
	d.department_name,AVG(e.salary)
FROM departments d,employees e
WHERE d.department_id = e.department_id
GROUP BY e.department_id;   -- 可以不出现在select列表中

2.使用多个列分组

按照员工表中的department_id 和 job_id进行分组
image

SELECT department_id dept_id,job_id,SUM(salary)
FROM employees
GROUP BY department_id,job_id;

image

3.GROUP BY中使用WITH ROLLUP

with rollup关键字将在查询出的分组记录之后增加一条记录数量

SELECT department_id,AVG(salary)
FROM employees
WHERE department_id>80
GROUP BY department_id WITH ROLLUP;

不使用和使用with rollup的对比
image

注意:当使用rollup时,不能同时使用order by子句进行结果排序,即rollup和order by是互相排斥的。

posted @ 2022-08-16 18:44  植树chen  阅读(51)  评论(0编辑  收藏  举报