how to check the 3rd max salary from an employee table? One
of the queries used is as follows:

select sal from emp a where 3=(select
count(distinct(sal)) from emp b
where a.sal<=b.sal).

Here in the sub query "select
count(distinct(sal)) from emp b
where a.sal<=b.sal" or
"select count(distinct(sal)) from emp b
where a.sal=b.sal" should reveal the same number of rows is
in't it? Can any one here please explain me how is this
query working perfectly.

However, there is another query to get the 3rd highest of
salaries of employees that logic I can understand. Pls find
the query below.
"select min(salary) from emp where salary in(select
distinct
top 3 salary from
emp order by salary desc)"

Please explain me how

"select sal from emp a where 3=(select
count(distinct(sal)) from emp b
where a.sal<=b.sal)" works

source:http://www.allinterview.com/showanswers/33264.html.

Thanks in advance
Regards,
Karthik.

Answer Posted / aalee

SELECT *
FROM employees
ORDER BY salary DESC
LIMIT 2 , 1


its so simple!!!!!!

Is This Answer Correct ?    6 Yes 8 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

What is mutating table error?

664


GLOBAL TEMPORARY TABLE over Views in advantages insolving mutating error?

2572


What is pl sql quora?

649


Can we use insert statement in function?

516


Where not exists in sql?

503






Why is a trigger used?

529


Explain the working of primary key?

612


What is sql data?

552


what is table? : Sql dba

572


How do I install sql?

522


How to run sql*plus commands in sql developer?

592


How can we store rows in PL/SQL using array?

666


What is data type in database?

546


Define commit, rollback and savepoint?

578


What is difference between group by and partition by?

499