hive sql 函数集合(持续更新)

#6/20/24 增加greatest函数

select greatest(1,2,3,4,5,2)

结论:可以用hive presto spark得出正确的结果值

#6/20/24 增加last_value(cl1) ignore nulls over(order by ts ) as dt 函数:

有数据集:

1

1

1

2

2

 

3

3

 

4

4

3

5

5

5

6

6

 

需要把C2为空的值填充成上一行不为空的值 

结果应该看起来是如下(黄色部分为程序添加内容):

序号
c1
c2
1
1
1
2
2
1
3
3
1
4
4
3
5
5
5
6
6
5
   

presto 程序:

select 
c1,c2,last_value(c2) ignore nulls over(order by c1) as new_c2
from jdt_dev.ccc_xx order by c1 

结果值:

序号
c1
c2
new_c2
1
1
1
1
2
2
 
1
3
3
 
1
4
4
3
3
5
5
5
5
6
6
 
5

spark 程序 运行会有相同以上的结果:

select 
c1,c2,last_value(c2,true) over(order by c1) as new_c2
from jdt_dev.ccc_xx order by c1

#6/28/24 增加sum() over() 函数

在大促等活动中,有关方需要看从第一分钟开始的每分钟的累计,并用实时数据与离线数据做同步。该函数在离线的数据集中就发挥作用了。 

首先,离线会出每分钟的新用户数或是金额 ,主键可以认为是每分钟的结束时间等。

第二部,就是用函数计算累计 ,sum(amt) over(order by time )   -- 时间为正序排除

该函数的高级应用,增加计算的边界,具体语法见语句:

SUM(gmv) OVER(partition by team_name order by month range between 2 preceding and 0 following) AS pay_amt

RANGE BETWEEN 2 PRECEDING AND 0 FOLLOWING: 这个子句定义了窗口的具体范围。RANGE 窗口是根据有序的列来定义的,BETWEEN ... AND ... 指定了窗口的边界。

2 PRECEDING 表示窗口从当前行开始向上数两行。
0 FOLLOWING 表示窗口包括当前行本身,但不包括任何后续行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值