Hive窗口函数

business表如下图所示:
在这里插入图片描述
(1)查询在2017年4月份购买过的顾客及总人数

1)不用窗口函数
在这里插入图片描述
在这里插入图片描述
结果为1和4,并不是正确的答案。因为只有jack,mart两个人,所以正确的答案应该是2和2。

.2)使用窗口函数(注:over()函数要加在聚合函数的后面)
在这里插入图片描述在这里插入图片描述
3)若不分组使用窗口函数结果如下:
在这里插入图片描述
在这里插入图片描述
(2)查询顾客的购买明细及购买总额
在这里插入图片描述
在这里插入图片描述
(3)查询顾客的购买明细及月购买总额
在这里插入图片描述
在这里插入图片描述
(4)上述的场景,要将cost按照日期进行累加

1)不用窗口函数
在这里插入图片描述
在这里插入图片描述
发现只是当日的cost,并未进行累加

2)使用窗口函数
在这里插入图片描述
在这里插入图片描述
(5)上述的场景,要将cost按照每个人分类进行累加
在这里插入图片描述
思路正确,但语法上不支持,group不能用在over()中。可以用distribute by
在这里插入图片描述 在这里插入图片描述
(6)上述的场景,要将cost按照每个人和日期进行累加(distribute by与sort by连用而不是order by)
在这里插入图片描述
在这里插入图片描述
(7)查看顾客上次的购买时间
在这里插入图片描述
在这里插入图片描述
LAG(col,n):往前第n行数据
LEAD(col,n):往后第n行数据

(8)查询前20%时间的订单信息
在这里插入图片描述
在这里插入图片描述
NTILE(n):把有序分区中的行分发到指定数据的组中,各个组有编号,编号从1开始,对于每一行,NTILE返回此行所属的组的编号。注意:n必须为int类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值