需求分析
现有交易数据表user_trade如下:
-
user_id 用户id
-
pay_amount 用户支付额度
现在老板想知道总支付金额在前20%的用户。
输出要求如下:
-
user_id用户名(前20%的用户)
实现
(1)数据准备
1001,100.7 1001,70.8 1002,50.4 1003,70 1005,100.5 1002,80.1 1003,36.7 1004,38.5 1003,50 1004,30 1004,300.5 1005,500 1005,3 1006,260.1 1007,360.4 1008,680
(2)创建表
CREATE TABLE user_trade ( user_id string, pay_amount double ) ROW format delimited FIELDS TERMINATED BY ",";
(3)加载数据
load data inpath "/origin_data/user_trade.txt" into table user_trade;
(4)需求实现
分析:
Ntile函数使用
可以看成是:它把有序的数据集合平均分配到指定的数量(num)个桶中, 将桶号分配给每一行。如果不能平均分配,则优先分配较小编号的桶,并且各个桶中能放的行数最多相差1。<

博客介绍了如何利用NTILE函数在Hive中解决找出支付金额前20%的用户的需求。通过数据准备、创建表、加载数据和SQL实现,展示了NTILE函数的用法和分桶思想,强调了该函数在统计分析中的应用价值。
最低0.47元/天 解锁文章
1083

被折叠的 条评论
为什么被折叠?



