上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.4.3 自定义维度统计
ROLLUP和CUBE选项都是按照固定的方式进行分组,GROUP BY子句还支持一种更为灵活的分组选项:GROUPING SETS。该选项可以用于指定自定义的分组集,也就是自定义分组字段的组合方式,例如:
相当于指定了1个分组集:
其中,(dept_id,sex)表示按照不同部门和性别的组合进行分组,括号内的所有字段作为一个分组集,最外面的括号则包含了所有的分组集。
同样,以下ROLLUP选项:
相当于指定了3个分组集:
其中,(dept_id,sex)表示按照不同部门和性别的组合进行分组,(dept_id)表示按照不同的部门进行分组,()表示对全体员工进行汇总。
同样,以下CUBE选项:
相当于指定了4个分组集:
其中,(dept_id,sex)表示按照不同部门和性别的组合进行分组,(dept_id)表示按照不同的部门进行分组,(sex)表示按照不同的性别进行分组,()表示对全体员工进行汇总。
因此,ROLLUP和CUBE选项都属于GROUPING SETS选项的特例。GROUPING SETS选项的优势在于,可以指定任意的分组方式,例如:
以上查询分别按照不同的部门、不同的性别统计员工的数量,同时统计了全体员工的数量。查询返回的结果如下:
当分组统计的维度越来越多时,这种方式可以方便我们实现各种不同的业务统计需求。
MySQL和SQLite目前不支持GROUPING SETS选项。