问题描述
如何在ANSI SQL中检索50%的记录。在MS SQL Server中,我们有Top
和百分比。但是我想使用Oracle和PostgreSQL。
解决方法
在Postgres中,一个选项使用percent_rank()
。假设id
是您的订购栏:
select *
from (select t.*,percent_rank() over(order by id) prn from mytable t) t
where prn <= 0.5
这在Oracle中也可以使用,但是对于该数据库,我希望使用fetch
子句:
select *
from mytable t
order by id
fetch first 50 percent rows only