RT,如果按照百分比排序,例如字段如下
Online_user all_user
100 200
111 333
222 555
4 50
我们可以得到 online_user all_user online_user/all_user 三个字段,我现在想让online_user/all_user字段显示
50.0%
33.3%
40.0%
8%
我如何能让表格按照 online_user/all_user 字段降序排序,即得到
100 200 50%
222 555 40%
111 333 33%
4 50 8%我现在知道如果不对第三个字段进行百分比处理是能得到这个顺序的,但是进行%处理之后就得到了8%排第一位了
Online_user all_user
100 200
111 333
222 555
4 50
我们可以得到 online_user all_user online_user/all_user 三个字段,我现在想让online_user/all_user字段显示
50.0%
33.3%
40.0%
8%
我如何能让表格按照 online_user/all_user 字段降序排序,即得到
100 200 50%
222 555 40%
111 333 33%
4 50 8%我现在知道如果不对第三个字段进行百分比处理是能得到这个顺序的,但是进行%处理之后就得到了8%排第一位了
select Online_user, all_user,round(Online_user/all_user*100)||'%' from 表 order by Online_user/all_user desc
但是如果我处理成X%形式,他排序把X%当做字符串,按照X第一位排序,本例子就是8%排第一
select Online_user, all_user,百分比 from(
select Online_user, all_user,round(Online_user/all_user*100)||'%' 百分比,Online_user/all_user rn from 表 )
order by rn desc
order by Online_user/all_user desc,然后再外层
select online_user,
all_user,
round(Online_user/all_user*100,2)||'%'
from (select online_user,
all_user,
Online_user/all_user
from tab
order by Online_user/all_user desc)
是先select再order
select出来本省就排序好的
当select distinct
order by 必须包含于select
--昨晚没环境测试,我就说啊
--楼主还是在测试后说不可以吧。with tab as(
select 100 Online_user,200 all_user from dual
union all
select 111, 333 from dual
union all
select 222, 555 from dual
union all
select 4, 50 from dual
)
select Online_user, all_user,round(Online_user/all_user*100)||'%' percent
from tab order by Online_user/all_user descONLINE_USER ALL_USER PERCENT
100 200 50%
222 555 40%
111 333 33%
4 50 8%