- 功能:使用grouping操作来 判断 当前数据 是按照哪个字段来分组的
- 效果: 对于给定的分组,如果分组中 包含相应的列,则将位设置为0 ,否则将其设置为1
- 简单来说: 0:包含, 1:不包含 !!! 注意0是包含
示例
- 看最后一行grouping sets (month, day, (month, day))
select
month,day,count(1) cnt_nums,
grouping(month) "是否按照month分组",
grouping(day) "是否按照day分组",
grouping(month, day) "是否按照month,day分组" -- 按照month和day的二进制计算结果(可以根据结果看出其中有哪几个维度生效), month和day的顺序对结果有影响,
from
t_cookie
group by
grouping sets (month, day, (month, day));
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7203185ea2af0a6f621d55b5b3d5980f.png)
- 如图 二进制 01 转10进制为 1, 二进制10 转10进制为 2
结论
比如: 共有6个维度, grouping(1,2,3,4,5,6) 的结果为13
1. 将13转为二进制 1101
2. 6各维度
1 2 3 4 5 6
0 0 1 1 0 1
3. 0是包含这个维度,1是不包含这个维度.
所以,如果结果为13,则是 1 2 5 这三个维度生效