上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.4.1 小计、合计与总计
GROUP BY子句的ROLLUP选项可以生成按照不同层级进行汇总的结果,从而实现报表中的小计、合计和总计,例如:
其中,ROLLUP表示首先按照不同部门和性别的组合统计员工数量,然后按照不同的部门统计员工数量,最后统计全体员工的数量,注意括号不能省略。Oracle、Microsoft SQL Server以及PostgreSQL实现了以上语法。查询返回的结果如下:
查询结果中性别为空的记录表示按照不同部门统计的员工数量,部门编号和性别都为空的记录表示全体员工的数量。
MySQL提供了ROLLUP选项,但是语法略有不同,例如:
其中,WITH ROLLUP位于分组字段之后,而且无须使用括号。查询返回的结果和上面的示例相同。另外,Microsoft SQL Server也支持这种语法。
提示:GROUP BY子句的ROLLUP选项表示先按照所有分组字段进行分组汇总,然后从右至左依次去掉一个分组字段再进行分组汇总,被去掉的字段显示为空。最后,将所有的数据进行一次汇总,所有分组字段都显示为空。
SQLite目前不支持ROLLUP选项。