SQL 求百分比

--SELECT  cast(cast(分子*1.0*100/分母 as decimal(10,2)) as varchar(50)) +'%' from

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在HiveSQL中,可以使用NTILE函数来计算百分比。NTILE函数的语法是:ntile(num) over (\[partition_clause\] order_by_clause),其中num表示要将数据分成的桶的数量。然后可以根据桶号,选取前或后n分之几的数据。数据会完整展示出来,只是给相应的数据打上标签。具体要取几分之几的数据,需要再嵌套一层根据标签取出。需要注意的是,NTILE函数不支持ROWS BETWEEN语法。例如,NTILE(2) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW)是错误的写法。\[1\] 对于百分比的问题,可以使用NTILE函数来实现。例如,如果要支付金额前20%的用户,可以先使用NTILE函数将用户按照支付金额进行分桶,然后选择桶号为1的用户。具体的SQL语句如下: ``` select a.user_id, a.sum_pay_amount, a.level from ( select user_id, sum(pay_amount) as sum_pay_amount, ntile(5) over(order by sum(pay_amount) desc) as level from user_trade group by user_id ) a where a.level = 1 ``` 以上SQL语句将用户按照支付金额进行分组,并计算每个用户的支付金额总和。然后使用NTILE函数将用户分成5个桶,并给每个用户打上对应的标签。最后,选择桶号为1的用户,即支付金额最高的20%的用户。\[3\] #### 引用[.reference_title] - *1* *2* *3* [HiveSql面试题12--分桶问题(数据前或后百分比问题)](https://blog.csdn.net/godlovedaniel/article/details/108405758)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值