在subselect中好像不能用order by 吧,
SQL> select id
2 from
3 (select id from tab1 order by wage desc)
4 where rownum <= (select count(*)*0.02 from tab1);
(select id from tab1 order by wage desc)
*
ERROR at line 3:
ORA-00907: missing right parenthesisSQL>
改成group by才能成功吧,因为group by有order by asc的功能。
select id from tab1
minus
select id
from
(
select id,WAGE from tab1
GROUP by WAGE,ID
)
where rownum <= (select count(*)*(1-0.02) from tab1)
效率就没办法了,可能改成procdure会好一点。
SQL> select id
2 from
3 (select id from tab1 order by wage desc)
4 where rownum <= (select count(*)*0.02 from tab1);
(select id from tab1 order by wage desc)
*
ERROR at line 3:
ORA-00907: missing right parenthesisSQL>
改成group by才能成功吧,因为group by有order by asc的功能。
select id from tab1
minus
select id
from
(
select id,WAGE from tab1
GROUP by WAGE,ID
)
where rownum <= (select count(*)*(1-0.02) from tab1)
效率就没办法了,可能改成procdure会好一点。
where rownum <= (select count(*)*0.1 from tab1) order by wage asc