Hive下的 GROUPING SETS语句

本文介绍了Hive中的GROUPING SETS语句,它用于多维数据分析,能简化多组GROUP BY查询。通过案例展示了如何查询总人数、部门人数、性别细分等统计信息,对比了使用GROUPING SETS与多次UNION查询的不同实现方法。
摘要由CSDN通过智能技术生成

GROUPING SETS

解释GROUPING SETS

grouping sets 用于多维分析
它是group by的子句,用来简化多个实现group by条件的表的联合查询

官网这样描述

The GROUPING SETS clause in GROUP BY allows us to specify more than one GROUP BY option in the same record set. All GROUPING SET clauses can be logically expressed in terms of several GROUP BY queries connected by UNION. Table-1 shows several such equivalent statements. This is helpful in forming the idea of the GROUPING SETS clause. A blank set ( ) in the GROUPING SETS clause calculates the overall aggregate.

翻译

GROUP BY 中的 GROUPING SETS 子句允许我们在同一记录集中指定多个 GROUP BY 选项。 所有 GROUPING SET 子句都可以根据由 UNION 连接的几个 GROUP BY 查询在逻辑上表达。 表 1 显示了几个这样的等效语句。 这有助于形成 GROUPING SETS 子句的想法。 GROUPING SETS 子句中的空白集 ( ) 计算整体聚合。

表1

Aggregate Query with GROUPING SETS Equivalent Aggregate Query with GROUP BY
SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b
GROUPING SETS ( (a,b), a)
SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b
UNION
SELECT a, null, SUM( c ) FROM tab1 GROUP BY a
SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b
GROUPING SETS ( (a, b), a, b, ( ) )
SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b
UNION
SELECT a, null, SUM( c ) FROM tab1 GROUP BY a, null
UNION
SELECT null, b, SUM( c ) FROM tab1 GROUP BY null, b
UNION
SELECT null, null, SUM( c ) FROM tab1
SELECT a, b, SUM© FROM tab1 GROUP BY a, b
GROUPING SETS ( (a,b) )
SELECT a, b, SUM© FROM tab1 GROUP BY a, b
SELECT a,b, SUM( c ) FROM tab1 GROUP BY a, b
GROUPING SETS (a,b)
SELECT a, null, SUM( c ) FROM tab1 GROUP BY a
UNION
SELECT null, b, SUM( c ) FROM tab1 GROUP BY b

案例

需求:
查询总人数,部门人数,女生人数,部门女生人数,男生人数,部门男生人数

数据:

id,name,gender,deptid
1001,aa,male,10
1002
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值