hive开窗函数 sum() over()

求有多少个数  sum(1) count(*)

select sum(1) from  table;


求有多少个满足某个条件的个数  sum(if(2>1,0,1))  count( if(2>1,0,1))(此处的条件就是我们认为的事件)


求本组有多少个满足某个条件的个数  sum(if(2>1,0,1))over(partition by user_id)


求本组截止到当前行有多少个满足某个条件的个数 sum(if(2>1,0,1))over(partition by user_id order by event_ts)

Hive中的开窗函数(Window Functions)是一种在查询结果集中进行计算并返回结果的函数。它可以用来计算一些聚合函数的子集,如累计和、排名、分组百分比等等。 Hive支持以下几种开窗函数: 1. ROW_NUMBER():用于返回每个分区中行的序号,从1开始计数; 2. RANK():用于返回每个分区中行的排名,相同的值排名相同,排名相同时下一个排名会跳过; 3. DENSE_RANK():用于返回每个分区中行的密集排名,相同的值排名相同,排名相同时下一个排名不会跳过; 4. PERCENT_RANK():用于返回每个分区中行的百分比排名,即排名/(分区行数-1); 5. CUME_DIST():用于返回每个分区中行的累计分布函数值,即小于等于当前值的行数占总行数的比例; 6. LAG():用于返回当前行指定偏移量之前的行的值; 7. LEAD():用于返回当前行指定偏移量之后的行的值; 8. FIRST_VALUE():用于返回每个分区中第一行的值; 9. LAST_VALUE():用于返回每个分区中最后一行的值; 10. AVG()SUM()、MIN()、MAX()、COUNT()等聚合函数开窗函数需要使用 OVER() 关键字和 PARTITION BY 子句进行分区,并可以使用 ORDER BY 子句进行排序。例如,以下是一个使用 ROW_NUMBER() 开窗函数Hive 查询示例: ``` SELECT id, name, ROW_NUMBER() OVER(PARTITION BY name ORDER BY id) AS row_num FROM student; ``` 该查询将返回一个结果集,其中包含每个学生的id、name和按照name进行分区后的行号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值