How to get second largest or third largest entry from a table [duplicate]
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 = 3This 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
);
I think the below query will work to find the second highest record with NOT IN.
SELECT MAX( userId )
FROM table
WHERE userId NOT IN (
SELECT MAX( userId )
FROM table
);
simple and useful...
To get second largest salary use this:
select salary from
(select s2.salary,rownum rm from
(select distinct salary from employees order by salary desc)
s2 where rownum<=2)
where rm >= 2
It works for second highest salary,
$query = "SELECT * FROM `table_name` ORDER BY field_name` DESC LIMIT 1 , 1 ";