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 / gaurav
If you use "select count(distinct(sal)) from emp b
where a.sal=b.sal" It will always give output as 1. because for every salary in emp a, there will be one distinct sal in emp b.
So when we use a.sal <= b.sal, we are counting the number of people who have salary greater than or equal to your salary. So comparing it with 3 will give us 3rd maximum salary.
| Is This Answer Correct ? | 0 Yes | 0 No |
Post New Answer View All Answers
What are the benefits of triggers?
What are basic techniques of indexing?
What is the difference between sql, mysql and sql server?
What is cursor status?
How do you add a column to a table?
what are wild cards used in database for pattern matching ? : Sql dba
what is the difference between inner and outer join? Explain with example. : Sql dba
Mention what is the use of function "module procedure" in pl/sql?
How do I find duplicates in a single column in sql?
Why do we need a foreign key?
How do I save the results of sql query in a file?
What is sql integrity?
What is the difference between Union and Union all. Which is faster.
What does <> sql mean?
Can we join 3 tables in sql?