数据求前或后百分比问题(分桶思想)

博客介绍了如何利用NTILE函数在Hive中解决找出支付金额前20%的用户的需求。通过数据准备、创建表、加载数据和SQL实现,展示了NTILE函数的用法和分桶思想,强调了该函数在统计分析中的应用价值。
摘要由CSDN通过智能技术生成

需求分析

现有交易数据表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。<

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值