更新时间:2026-07-28 GMT+08:00
分享

如何查询表中某列第N大的数据?

答:可以使用窗口函数来实现。请根据实际情况选择row_number()、rank()和dense_rank()三个窗口函数其中之一。
--建表插入数据。
gaussdb=# CREATE TABLE tbl_test(name varchar(20),tamo int);
gaussdb=# INSERT INTO tbl_test VALUES('Bob',7000),('Jack',6500),('July',6800);
gaussdb=# INSERT INTO tbl_test VALUES('Luna',7200),('Henry',7000),('John',8000);

--使用如下SQL查询出交易额(tamo)排名第三的数据。
gaussdb=# SELECT * FROM (SELECT *,dense_rank() over(order by tamo desc) rank FROM tbl_test) WHERE rank = 3;
 name  | tamo | rank 
-------+------+------
 Bob   | 7000 |    3
 Henry | 7000 |    3
(2 rows)

--删除。
gaussdb=# DROP TABLE tbl_test;

相关文档