I would suggest to use
ranking functions[
^].
Have a look at below example:
DECLARE @emp_sal TABLE (empid INT, salary DECIMAL(8,2))
INSERT INTO @emp_sal (empid, salary)
VALUES (1, 2000.85),(3, 1850.00),(5, 1670.55),
(11, 1100.25),(15, 1100.00),(17, 2000.85),
(22, 1003.33),(24, 1666.66),(26, 1010.10),
(28, 1245.67),(41, 1134.56),(47, 1992.85),
(101, 1222.22),(113, 1333.33),(177, 1555.55)
SELECT TOP (1) *
FROM (
SELECT TOP (3) *
FROM @emp_sal
ORDER BY salary DESC
) AS T
-NO! return only salary for empid=1
SELECT RANK() OVER (ORDER BY salary DESC) AS RowNo, *
FROM @emp_sal