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 に答える