Different ways to find 2nd highest salary from employee table

Posted on December 15, 2013 by Suresh Kamrushi in Mysql

“Most Common Question in Interview, how to get 2nd or Nth highest salary from table.”

Now a days i am conducting PHP / Mysql interview for my organisation. And came across many of resumes with 3-4 years of experience in web development. But couple of developer given me the correct answer to this question. That is what i think i should share this.

You can write query in number of ways, but i list few of them which are easy to write and understand. Mysql having advantage of writing query with “limit”, by which you can handle start and end point.

1) SELECT salary FROM employee ORDER BY salary DESC LIMIT 1,1

This query will work only in MySql as it uses “limit”.
For other Sql Database you can opt for following query:

SELECT MAX(salary) FROM employee WHERE salary NOT IN (SELECT MAX(salary) FROM employee)

OR

SELECT DISTINCT(a.salary) FROM employee a WHERE 2 = (SELECT COUNT( DISTINCT(b.salary) )FROM employee b WHERE a.salary <= b.salary ) ;

Last query will retrieve N number of highest salary from employee table. just you need to change “2” as per your requirement.

Enjoy Exploring Mysql……:)

  Comments or questions are welcome  

Tagged as , ,