CUBE(args list) 按照参数的组合分组,
GROUP BY CUBE(a,b,c) abc , ab,ac,db,a,b,c,全表
SELECT year_id,month_id,day_id,SUM(sales_value)
FROM sales_tab
GROUP BY CUBE(year_id,month_id,day_id)
abc: 同年同月通同日的,分一个组
ab,同年同月的 分一个组
ac:同年同日的 分一个组
bc:同月同日的
a,年
b,月
c,日
全表:统计
但是这个例子中有许多没意义的,就说有这么一种方法,在以后中如果用这个需求,可以用CUBE()
GROUPING SETS():每个参数是一种分组方式,然后将这些分组统计后并在一个结果集中显示
仅查看每天与每月的营业额
SELECT year_id,month_id,day_id,SUM(sales_value)
FROM sales_tab
GROUP BY
GROUPING SETS((year_id,month_id,day_id),--每天
(year_id,month_id) --每月
)
2010 1 1 175.38
2010 1 2 37.51
2010 1 4 56.28
2010 1 5 64.44
2010 1 6 158.19
2010 1 7 112.64
2010 1 9 80.51
2010 1 10 204.83
2010 1 13 73.26
2010 1 14 42.49
2010 1 15 67.38
2010 1 17 66.30
2010 1 19 20.52
2010 1 20 22.42
2010 1 23 160.03
2010 1 25 74.56
2010 1 26 110.13
2010 1 27 14.74
2010 1 28 29.10
2010 1 29 45.24
2010 1 30 52.67
2010 1 1668.62
只贴出1月的 其他的是一样的