Here I am writing SQL query to find nth salary without using top or max keywords.
- SELECT * FROM (
- SELECT ROW_NUMBER() OVER (ORDER BY SALARY DESC) AS rownumber,Salary
- FROM Employee )
- AS foo
- WHERE rownumber = n
Example:
- SELECT * FROM (
- SELECT ROW_NUMBER() OVER (ORDER BY SALARY DESC) AS rownumber,Salary
- FROM Employee )
- AS foo
- WHERE rownumber = 5
The above query will show 5th highest salary from Employee table.
Here is a free eBook, SQL Queries for Beginners

Tushar ThakerPosted Feb 7, 2020, 2:40 PM
This will not work when same salary amount is exist more than one time in table