GROUPING SETS
先说一下背景,我么知道GROUP BY 可以进行数据分组统计,我们将分组称之为统计的维度,例如 GROUP BY school
我们认为维度是学校,GROUP BY 也支持多个字段进行分组统计,例如GROUP BY school,grade
我们的维度就是 学校+年级
的组合,虽然是组合还是单维度的,组合在一起就一个依然是单个维度,因为统计出来的数据你只能得到每个学校的每个年级的信息,你得不到学校的单独统计信息也得不到年级的单独统计信息
学校名称 年级 学生数
清华小学 6 1000
北大小学 6 1300
北大小学 5 1600
南京小学 5 500
............
就像上面的统计信息,如果你不做二次统计的话,你不能得到整个清华小学有多少人,你也得不到整个6年级有多少人
这就是我们说的维度,因为GROUP BY的维度是单一的,就是它只能计算某个维度的信息,而不能同时计算多个维度,在一个GROUPING SETS 查询中,根据不同的单维度组合进行聚合,等价于将不同维度的GROUP BY结果进行UNION ALL操作。
GROUPING SETS就是一种将多个GROUP BY逻辑UNION写在一个H