0


【Hive】grouping sets() 函数

文章目录

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. 例子

  1. 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
  2. 导入数据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;
  3. 分别统计每一天的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 所有, 如有侵权,请联系我们删除。

“【Hive】grouping sets() 函数”的评论:

还没有评论