MySQL数据库中group by子句修改程序#应用with rollup修饰符解决

  GROUP BY子句允许一个将额外行添加到简略输出端 WITH ROLLUP 修饰符。这些行代表高层(或高聚集)简略操作。ROLLUP 因而允许你在多层分析的角度回答有关问询的问题。

  应用场景:有一张员工表,里面包括了员工号、姓名、性别、薪水、所在的部门号等基本信息,其中员工号(主键)、部门号(外键 ) ,现在统计每个部门的人数,(说明:t_employee(员工表),字段:did(部门号))。

语句实现一:

SELECT did AS "部门编号",COUNT(*) AS "人数统计" 
FROM t_employee 
GROUP BY did;

查询结果:
MySQL数据库中group by子句修改程序#应用with rollup修饰符解决_第1张图片

  上面查询结果显示了每个部门的人数, 但是我还想统计所有部门的总人数,那么就必须累加每一个部门的单个值或运行一个加法询问,现在就要使用 rollup(中文意思:卷起),官方文档说它能用一个问询提供双层分析。将一个 with group修饰符添加到group up 语句,使询问产生另一行结果,该行显示了所有部门的总人数。

语句实现二:

SELECT  did,COUNT(*) AS "人数统计"
 FROM t_employee 
 GROUP BY did 
 WITH ROLLUP;

查询结果:
MySQL数据库中group by子句修改程序#应用with rollup修饰符解决_第2张图片

实现二输出优化:

语句实现三:

SELECT IFNULL(did,'人数总计:') AS "部门编号" ,COUNT(*) AS "人数统计" 
FROM t_employee 
GROUP BY did 
WITH ROLLUP;

查询结果:
MySQL数据库中group by子句修改程序#应用with rollup修饰符解决_第3张图片

注意:
  ①当你使用 ROLLUP时, 你不能同时使用 ORDER BY子句进行结果排序。换言之, ROLLUP 和ORDER BY 是互相排斥的。
  ②将ROLLUP同 LIMIT一起使用可能会产生更加难以解释的结果,原因是对于理解高聚集行

#轻松一刻:

MySQL数据库中group by子句修改程序#应用with rollup修饰符解决_第4张图片


☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!

☞本人博客:https://coding0110lin.blog.csdn.net/  欢迎转载,一起技术交流吧!

你可能感兴趣的:(MySQL)