文章目录
1. 语法
grouping sets()函数是一种将多个group by逻辑写在一个sql语句中的便利写法。
等价于将不同维度的GROUP BY结果集进行UNION ALL。
GROUPING__ID是分组编号,从1开始。
比如:
-- 第一个sqlselect a, b, c from t groupby a
-- 第二个sqlselect a, b, c from t groupby b
-- 第三个sqlselect a, b, c from t groupby a, b
-- 将这3个查询结果合在一起有select a, b, c from(select a, b, c from t groupby a)unionallselect a, b, c from(select a, b, c from t groupby b)unionallselect a, b, c from(select a, b, c from t groupby a, b)-- 将这两个合在一起的更简单的写法:使用 grouping setsselect a, b, c from t
groupby a, b
grouping sets (a, b,(a, b))
2. 例子
cookie_info.txt
文件:2018-03,2018-03-10,cookie12018-03,2018-03-10,cookie52018-03,2018-03-12,cookie72018-04,2018-04-12,cookie32018-04,2018-04-13,cookie22018-04,2018-04-13,cookie42018-04,2018-04-16,cookie42018-03,2018-03-10,cookie22018-03,2018-03-10,cookie32018-04,2018-04-12,cookie52018-04,2018-04-13,cookie62018-04,2018-04-15,cookie32018-04,2018-04-15,cookie22018-04,2018-04-16,cookie1
- 导入数据
CREATETABLE cookie_info(month STRING,day STRING, cookieid STRING)ROW FORMAT DELIMITEDFIELDSTERMINATEDBY',';loaddatalocal inpath '/root/hivedata/cookie_info.txt'intotable cookie_info;select*from cookie_info;
- 分别统计每一天的cookie和每月的cookie并联合在一张表中
SELECTmonth,day,COUNT(DISTINCT cookieid)AS nums,GROUPING__IDFROM cookie_infoGROUPBYmonth,dayGROUPING SETS (month,day)ORDERBY GROUPING__ID;
结果:
本文转载自: https://blog.csdn.net/qq_43546676/article/details/128291169
版权归原作者 ElegantCodingWH 所有, 如有侵权,请联系我们删除。
版权归原作者 ElegantCodingWH 所有, 如有侵权,请联系我们删除。