How to get second largest or third largest entry from a table

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


If you expect more than one row to have the same value in your_sort_column you can also use the rank() function

SELECT *
FROM (
  SELECT some_column, 
         rank() over (order by your_sort_column desc) as row_rank
  FROM some_table
) t
WHERE row_rank = 3
This migh return more than one row..

You can find the Nth largest value of a column by using the following query

SELECT * 
FROM TableName a 
WHERE n = (
           SELECT count( DISTINCT (b.ColumnName) )
           FROM TableName b 
           WHERE a.ColumnName <= b.ColumnName 
          );

Tags:

Sql

Oracle

Max