今天记录一下在OLAP中常用的分析函数,这几个函数可以大大简化sql,使代码更优美,效率更高
准备数据:test表
school grade user
hf第一中学 一年级 张三1
hf第一中学 二年级 张三2
hf第一中学 三年级 张三3
hf第一中学 四年级 张三4
hf第一中学 五年级 张三5
hf第一中学 六年级 张三6
hf第二中学 一年级 李四1
hf第二中学 二年级 李四2
hf第二中学 三年级 李四3
hf第二中学 四年级 李四4
hf第二中学 五年级 李四5
hf第二中学 六年级 李四6
hf第三中学 一年级 王二1
hf第三中学 二年级 王二2
hf第三中学 三年级 王二3
hf第三中学 四年级 王二4
hf第三中学 五年级 王二5
hf第三中学 六年级 王二6
- grouping sets 在一个group by 的聚合查询中,根据不同的维度进行组合,我们可以选择性的去对维度聚合,也可以聚合所有维度,当维度上卷聚合时,维度值为 null,可用ifnull函数去赋值,得到一个新的汇总维度,其中grouping__id代表一个分组的唯一id
select
ifnull(school,'全学校') as school,
ifnull(grade,'全年级') as grade,
count(user) as num,
grouping__id
from test
group by
school,
grade
grouping sets((school,grade),grade,())
上面的代码相当于