分组集(Grouping Sets)是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用“union all”,计算多个结果集的并集。使用分组集的聚合查询,返回的select 子句相同,由于selec ...
分组集(Grouping Sets)是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用“union all”,计算多个结果集的并集。使用分组集的聚合查询,返回的select 子句相同,由于select子句只能引用分组列,因此,在单个分组中缺失的分组列,TSQL返回NULL值。
TSQL使用 group by 子句分组,有4种不同的语法:
- group by a,b
- group by rollup(a,b)
- group by cube(a,b)
- group by grouping sets((),(a),(a,b),rollup(a,b),cube(a,b))
一,分组集
1,单个分组
以集合的视角来看 “group by a,b” 子句,等价于 “group by grouping sets (a,b)”,(a,b) 是单个分组,是集合相乘的结果:(a)*(b)=(a,b) ;
2,预定义的分组集(grouping sets):
- rollup(a,b) :预定义的分组集是(),(a),(a,b);
- cube(a,b) :预定义的的分组集是(),(a),(b),(a,b);
3,使用grouping sets 自定义分组集
单个分组的集合是分组集, 分组集 grouping sets((a),(a,b)) :表示两个分组 (a,b),(a) 的并集,查询的结果等价于:
group by (a,b)union allgroup by(a)
原标题:TSQL 分组集(Grouping Sets)
关键词:sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。