To increase your question, I added two employees with the same salary in the third position.
To get this, you will need the first dense_rank salary department. After you need to cancel the salary rating and get a position 1
try
DECLARE @employee1 TABLE ( empid INT, empname VARCHAR(10), deptid INT, salary MONEY ) INSERT @employee1 Values (1,'a',1, 1000 ) ,(1,'b',1, 1200 ) ,(2,'bb',1, 1200 ) ,(1,'c',1, 1500 ) ,(3,'ccc',1, 1500 ) ,(1,'c',1, 15700) ,(1,'d',2, 1000 ) ,(1,'e',2, 1200 ) ,(1,'g',3, 1500 ) WITH cte_rank AS (SELECT Dense_rank() OVER ( partition BY deptid ORDER BY salary) SalaryRank, * FROM @employee1), cte_final AS (SELECT Dense_rank() OVER ( partition BY deptid ORDER BY salaryrank DESC) SalaryRankReverse, * FROM cte_rank WHERE salaryrank <= 3) SELECT * FROM cte_final WHERE salaryrankreverse = 1
Result
SalaryRankReverse SalaryRank empid empname deptid salary -------------------- -------------------- ----------- ---------- ----------- --------------------- 1 3 1 c 1 1500.00 1 3 3 ccc 1 1500.00 1 2 1 e 2 1200.00 1 1 1 g 3 1500.00