HIVE中的分组聚合语句

server/2025/3/4 23:29:37/

GROUPING SETS使用

grouping sets是一种将多个group by 逻辑写在一个sql语句中的便利写法。

--GROUP BY a, b GROUPING SETS ((a,b))

hive (default)>

1.

SELECT order_date,user_id,count(*) FROM ds_hive.ch6_t_order GROUP BY order_date,user_id GROUPING SETS ((order_date,user_id))

等价于

SELECT order_date,user_id,count(*) FROM ds_hive.ch6_t_order GROUP BY order_date,user_id

2.

SELECT order_date,user_id,count(*) FROM ds_hive.ch6_t_order GROUP BY order_date,user_id GROUPING SETS ((order_date,user_id), user_id)

等于

SELECT order_date,user_id,count(*) FROM ds_hive.ch6_t_order GROUP BY order_date,user_id

UNION ALL

SELECT null,user_id,count(*) FROM ds_hive.ch6_t_order GROUP BY user_id

3.

SELECT order_date,user_id,count(*) FROM ds_hive.ch6_t_order GROUP BY order_date,user_id GROUPING SETS (order_date,user_id)

等于

SELECT order_date, null,count(*) FROM ds_hive.ch6_t_order GROUP BY order_date

UNION ALL

SELECT null, user_id,count(*) FROM ds_hive.ch6_t_order GROUP BY user_id

4.

SELECT order_date,user_id,count(*) FROM ds_hive.ch6_t_order GROUP BY order_date,user_id GROUPING SETS ((order_date,user_id), order_date,user_id, ())

等于

SELECT order_date,user_id,count(*) FROM ds_hive.ch6_t_order GROUP BY order_date,user_id

UNION ALL

SELECT order_date, null,count(*) FROM ds_hive.ch6_t_order GROUP BY order_date

UNION ALL

SELECT null, user_id,count(*) FROM ds_hive.ch6_t_order GROUP BY user_id

UNION ALL

SELECT nullnull,count(*) FROM ds_hive.ch6_t_order

;

with cube使用

group by a,b,c with cube group by中所有key的组合

等效

group by a,b,c grouping sets((a,b,c), (a,b), (a,c), (b,c), a, b, c, ())

SELECT order_date,user_id,count(*) FROM ds_hive.ch6_t_order GROUP BY order_date,user_id

GROUPING SETS ((order_date,user_id), order_date,user_id, ())

;

-- 等效

SELECT order_date,user_id,count(*) FROM ds_hive.ch6_t_order GROUP BY order_date,user_id

with cube

;

with rollup的使用

-- GROUP BY age, sex with rollup 等效于  GROUP BY age, sex GROUPING SETS ( (age,sex),age,() )
-- 相当于按右侧递减的顺序group by

group by a,b,c grouping sets((a,b,c), (a,b), (a), ())

SELECT user_id

 ,product_id

 ,order_date

 ,count(id) FROM

ds_hive.ch6_t_order

GROUP BY user_id

 ,product_id

 ,order_date

with rollup;

--等于

SELECT user_id

 ,product_id

 ,order_date

 ,count(id) FROM

ds_hive.ch6_t_order

GROUP BY user_id

 ,product_id

 ,order_date

GROUPING SETS ( (user_id,product_id,order_date),(user_id,product_id),user_id,())

;


http://www.ppmy.cn/server/172447.html

相关文章

5个GitHub热点开源项目!!

1.自托管 Moonlight 游戏串流服务:Sunshine 主语言:C,Star:14.4k,周增长:500 这是一个自托管的 Moonlight 游戏串流服务器端项目,支持所有 Moonlight 客户端。用户可以在自己电脑上搭建一个游戏…

什么是 Prompt?——一篇详细的介绍

在人工智能(AI)和自然语言处理(NLP)的领域,Prompt(提示语)是与 AI 模型进行交互的核心工具之一。它是一个人类输入的指令,目的是引导 AI 模型执行特定的任务或生成相应的内容。随着生…

Android 获取jks的SHA1值:java.io.IOException: Invalid keystore format

命令生成 keytool -list -v -keystore 全路径.jks -alias 别名 -storepass 密码 -keypass 密码 1、遇到 的问题: 通过快捷键 ‘win r’ 启动的小黑框运行上面的命令会出现下面这个错误keytool 错误: java.io.IOException: Invalid keystore format 2、解决问题 …

java后端开发day24--阶段项目(一)

(以下内容全部来自上述课程) GUI:Graphical User Interface 图形用户接口,采取图形化的方式显示操作界面 分为两套体系:AWT包(有兼容问题)和Swing包(常用) 拼图小游戏…

Hue UI展示中文

个人博客地址:Hue UI展示中文 | 一张假钞的真实世界 如果使用开发分支代码如master分支)编译安装,需要自己编译语言文件。例如Hue安装目录为“/opt/hue”,则安装后执行以下命令: $ cd /opt/hue $ make locales 如果…

千峰React:Hooks(上)

什么是Hooks ref引用值 普通变量的改变一般是不好触发函数组件的渲染的,如果想让一般的数据也可以得到状态的保存,可以使用ref import { useState ,useRef} from reactfunction App() {const [count, setCount] useState(0)let num useRef(0)const h…

【硬核拆解】DeepSeek开源周五连击:中国AI底层技术的“破壁之战”

​ 大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 当全球AI竞赛聚焦于大模型军备竞赛时&a…

【Python】基础语法三

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解Python的函数、列表和数组。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! > 专栏选自&#xff…