如何编写SQL查询以从表中提取50%的记录?

问题描述

如何在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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...