Oracle数据库 求百分比排名

本文介绍了一种使用SQL对包含百分比数值的列进行排序的方法,并通过具体实例展示了如何利用内置函数实现数据的排名。
例:
有这样一列 列名为NO 值为
 NO
8.2% 
2.1% 
9.4% 
1.7% 
3.5% 
7.1% 
9.8% 
8.1% 

那么我想得到的结果是
  NO    排名
  8.2%   3
  2.1%   7
  9.4%   2
  1.7%   8
  3.5%   6
  7.1%   5
  9.8%   1

  8.1%   4

--------------

SQL> select no,rank()over(order by to_number(rtrim(no,'%')) descfrom tb order by rowid
  2  ;
  
NO         RANK()OVER(ORDERBYTO_NUMBER(RT
---------- ------------------------------
8.2%                                    3
2.1%                                    7
9.4%                                    2
1.7%                                    8
3.5%                                    6
7.1%                                    5
9.8%                                    1
8.1%                                    4
  
rows selected
  
Executed in 0.047 seconds
----------
select no,
rank() over( order by to_number(rtrim(trim(no),'%')) desc) num
 from percnt_table 
order by no  desc;

因为不知道你的数据类型,我就建立了一个字符型的字段
---------
select no, row_number() over(order by to_number(replace(no,'%','')) desc) px from tb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值