GROUP BY子句允许一个将额外行添加到简略输出端 WITH ROLLUP 修饰符。这些行代表高层(或高聚集)简略操作。ROLLUP 因而允许你在多层分析的角度回答有关问询的问题。
应用场景:有一张员工表,里面包括了员工号、姓名、性别、薪水、所在的部门号等基本信息,其中员工号(主键)、部门号(外键 ) ,现在统计每个部门的人数,(说明:t_employee(员工表),字段:did(部门号))。
语句实现一:
SELECT did AS "部门编号",COUNT(*) AS "人数统计"
FROM t_employee
GROUP BY did;
查询结果:
上面查询结果显示了每个部门的人数, 但是我还想统计所有部门的总人数,那么就必须累加每一个部门的单个值或运行一个加法询问,现在就要使用 rollup(中文意思:卷起),官方文档说它能用一个问询提供双层分析。将一个 with group修饰符添加到group up 语句,使询问产生另一行结果,该行显示了所有部门的总人数。
语句实现二:
SELECT did,COUNT(*) AS "人数统计"
FROM t_employee
GROUP BY did
WITH ROLLUP;
查询结果:
实现二输出优化:
语句实现三:
SELECT IFNULL(did,'人数总计:') AS "部门编号" ,COUNT(*) AS "人数统计"
FROM t_employee
GROUP BY did
WITH ROLLUP;
查询结果:
注意:
①当你使用 ROLLUP时, 你不能同时使用 ORDER BY子句进行结果排序。换言之, ROLLUP 和ORDER BY 是互相排斥的。
②将ROLLUP同 LIMIT一起使用可能会产生更加难以解释的结果,原因是对于理解高聚集行
#轻松一刻:
☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!
☞本人博客:https://coding0110lin.blog.youkuaiyun.com/ 欢迎转载,一起技术交流吧!