简洁分组(HiveSQL)

数据表:t_dealer

province

city

dealer

北京市

北京市

北京汽车销售有限公司

上海市

上海市

上海汽车销售有限公司

广东省

广州市

广州汽车销售有限公司

group by 对比 groupingsets

select province,city,count(1)
from t_dealer
group by province,city
grouping sets (
(province,city),
(province),
(city), 
()
)

等价于

select province,city,count(1)
from t_dealer
group by province,city
union all 
select province,null as city,count(1)
from t_dealer
group by province
union all 
select null as province,city,count(1)
from t_dealer
group by city
union all 
select null as province,null as city,count(1)
from t_dealer

GROUP BY 和 GROUPING SETS 都是用于对查询结果进行分组的语句,但它们在使用方式和应用场景上有所不同。

GROUP BY 通常用于对单个或多个列进行分组,它允许你指定一个或多个列作为分组条件。在查询结果中,每个分组条件只会出现一行记录,聚合函数可以用来对每个分组进行数据聚合。

GROUPING SETS 是 GROUP BY 的扩展,允许你定义多个数据分组。这样做使聚合更容易,并且使得多维数据分析更容易。GROUPING SETS 在同一查询中定义多个分组,通过对每个分组集中指定的组表达式的每个子集执行 GROUP BY,可以创建更灵活的分组方式。例如,GROUP BY A,B,C 等价于 GROUP BY A UNION GROUP BY B UNION GROUP BY C。

总的来说,如果只需要对单个或多个列进行简单分组,那么 GROUP BY 就足够了。然而,如果需要更灵活地定义多个分组,并且进行多维数据分析,那么 GROUPING SETS 是一个更好的选择。

cube 对比 groupingsets

select province,city,dealer,count(1)
from t_dealer
group by province,city,dealer
grouping sets (
(province,city,dealer),
(province,city),
(province,dealer),
(city,dealer),
(province),
(city), 
(dealer),
()
)

等价于

select province,city,dealer,count(1)
from t_dealer
group by province,city,dealer
with cube

GROUP BY 和 CUBE 都是用于对查询结果进行分组的语句,但它们在使用方式和应用场景上有所不同。

GROUP BY 通常用于对单个或多个列进行分组,它允许你指定一个或多个列作为分组条件。在查询结果中,每个分组条件只会出现一行记录,聚合函数可以用来对每个分组进行数据聚合。

CUBE 是 GROUP BY 的扩展,允许你生成更丰富的聚合结果。与 GROUP BY 不同,CUBE 在所选列的所有可能的组合上进行分组,并生成相应的聚合结果。这使得 CUBE 成为处理多维数据的强大工具。

总的来说,如果只需要对单个或多个列进行简单分组,那么 GROUP BY 就足够了。然而,如果需要更灵活地处理多维数据并生成所有可能的组合,那么 CUBE 是一个更好的选择。

rollup对比 groupingsets

select province,city,dealer,count(1)
from t_dealer
group by province,city,dealer
grouping sets (
(province,city,dealer),
(province,city),
(province),
()
)

等价于

select province,city,dealer,count(1)
from t_dealer
group by province,city,dealer
with rollup

在Hive中,GROUP BY 和 ROLLUP 都是用于对查询结果进行分组的语句,但它们在使用方式和应用场景上有所不同。

GROUP BY 通常用于对单个或多个列进行分组,它允许你指定一个或多个列作为分组条件。在查询结果中,每个分组条件只会出现一行记录,聚合函数可以用来对每个分组进行数据聚

ROLL UP会从右到左逐个剔除字段形成上卷的分组

声明:好星座所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者ai一条鱼所有,原文出处。若您的权利被侵害,请联系 删除。

本文链接:https://www.haoxingzuo.com/w/41823.html