1

我想用 Oracle 选择表的 60% 处的行。我可以通过以下方式找到 60% 行的编号:

select round(count(*)*0.60) as sira from 
    (select to_date(time) as tarih,lenght as hiz  from table order by length desc)

我正在寻找 60% 的行的名称列数据。也就是说,所有行的 60% 的长度应大于选定行的长度。

例如,对于此数据:

name   time    length
r1     10:00   1
r2     10:02   2
r3     10:04   3
...
r10    10:20   10

我正在寻找一个打印的查询r4(按减少长度排序的 60% 行。)

4

1 回答 1

2
select  *
from    (
        select  row_number() over (order by yt.length desc) as rn
        ,       count(*) over () as cnt
        ,       yt.*
        from    YourTable yt
        ) SubQueryAlias
where   rn = round(cnt * 0.60)

SQL Fiddle 的示例。

于 2013-05-09T11:03:59.190 回答