使用前提:

1、在使用group by 语句后,可能会对数据再次进行汇总,这个时候就需要with rollup。


2、with rollup 就是作用在聚合函数上的。如果聚合函数是COUNT(*)则会在统计的记录中再次求COUNT(*),如果是AVG(),则会在分组


3、with rollup 作用在group by 的第一个字段


(举例:先按照部门进行分组,再按照性别进行分组。使用with rollup 只作用在使用部门进行分组的表中,对聚合函数起作用)


应用实例:

 要求:根据age进行分组,统计平均薪水和组内成员个数,并对每个组的成员记录总和,

 结尾的4就是对聚合函数COUNT(*)的再次统计,1905.5000则是对每个组平均薪水,再次求平均薪水。

 代码实现


CREATE TABLE IF NOT EXISTS techers(

    id INT,

    age INT,

    `name` VARCHAR(10),

    salary INT 

);

 

INSERT INTO techers(id,age,`name`,salary)

VALUES (1,22,'王三',2200),

(2,23,'梁夏',2000),

(3,24,'李杰',2222),

(4,25,'王飞',1200);

 

SELECT *

FROM techers;

 

SELECT COUNT(*),age,AVG(salary)

FROM techers

GROUP BY age 

WITH ROLLUP;