如何从表中获得第二大或第三大条目

Nin*_*nja 11 sql oracle max

任何人都可以告诉我如何 Oracle中的表中找出第N个最大的条目

像最大的我们可以使用 MAX(column_name)有没有有效的方法来找到第n个最大的

a_h*_*ame 21

SELECT *
FROM (
  SELECT some_column, 
         row_number() over (order by your_sort_column desc) as row_num
  FROM some_table
) t
WHERE row_num = 3


如果您希望多行具有相同的值,your_sort_column也可以使用rank()函数

SELECT *
FROM (
  SELECT some_column, 
         rank() over (order by your_sort_column desc) as row_rank
  FROM some_table
) t
WHERE row_rank = 3
这个migh返回多行..


Abh*_*tel 6

您可以使用以下查询找到列的第n个最大值

SELECT * FROM TableName a WHERE 
n = (SELECT count(DISTINCT(b.ColumnName))
FROM TableName b WHERE a.ColumnName <=b.ColumnName);
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到Stack Overflow!谢谢你发布你的答案!请务必仔细阅读[自我推广常见问题解答](http://stackoverflow.com/faq#promotion).另请注意,每次链接到您自己的网站/产品时,您都要*免费发布免责声明. (2认同)

小智 5

我认为下面的查询可以找到NOT IN的第二高记录。

SELECT MAX( userId )
FROM table 
WHERE userId NOT IN ( 
                      SELECT MAX( userId )
                      FROM table
                    ); 
Run Code Online (Sandbox Code Playgroud)

简单实用...