find out the third highest salary?
Answers were Sorted based on User's Feedback
Answer / rajdevar
Guys
i have executed this query in sql plus.This is correct
Select * from EMP_USER A where n-1 = (select count
(distinct (sal)) from EMP_USER B where A.sal<B.sal)
where n=3
reason for using n-1 is below:
1.We are using correlated sub query.so sal value from each
row in outer query(EMP_USER A) is compared with sal of all
the rows in EMP_USER B
eg:
ENAME SAL
----- -----
SMITH 800
KING 5000
FORD 3000
here third highest is 800.so when executing this 800 from
outer query is compared with 800,5000,3000 in inner query
which returns a count(distinct(sal) = 2
if you use n instead of n-1 you get a empty result.
Let me know if this is correct
Is This Answer Correct ? | 13 Yes | 5 No |
Answer / vishal
Here is the correct query:
select ename,sal from emp e
where 3 = (select count(distinct(sal))+1 from emp
where e.sal < sal);
Is This Answer Correct ? | 12 Yes | 5 No |
Answer / sudheer
Guys Few of you have submitted an optimal query.
select distinct sal from emp A where 3 = (select count(sal)
from emp B where a.sal > b.sal)
However the integer 3 will not give the third highest salary
as expected. Point should be noted that the row starts with
zero.
so the actual result will the fourth highest salary with the
above query.
Is This Answer Correct ? | 7 Yes | 3 No |
Answer / kss
Hi every one,
i know that we can get that thr above quer..
one can try using analytic function giving ranks to the
salary column
select sal,dense_rank() over(order by sal desc) rank from
emp
Is This Answer Correct ? | 18 Yes | 15 No |
Answer / nehal
select e.sal from employee where n-1=(Select count(distinct
sal) from emp where sal>e.sal)
Put n=3 for the 3rd highest salary.
Is This Answer Correct ? | 10 Yes | 7 No |
Answer / selvaraj anna university coe
In Oracle 9i:
-------------
SQL> SELECT MAX(salary) FROM emp WHERE LEVEL=&no CONNECT BY
PRIOR Salary>salary;
Enter value for no: 3
old 1: SELECT MAX(SALARY) FROM EMP WHERE LEVEL=&no
CONNECT BY PRIOR SALARY>SALARY
new 1: SELECT MAX(SALARY) FROM EMP WHERE LEVEL=3 CONNECT
BY PRIOR SALARY>SALARY
MAX(SALARY)
-----------
500000
SQL>
Is This Answer Correct ? | 8 Yes | 5 No |
Answer / chanchal
SELECT MIN(salary) FROM Department WHERE salary IN
(SELECT TOP 3 salary FROM Department ORDER BY salary DESC)
Is This Answer Correct ? | 4 Yes | 2 No |
Answer / raj
Answer 28 is the dumbest way of writing the query.what
would you write if i want the 25 highest salary? repeat
this satement 25 times.
Is This Answer Correct ? | 3 Yes | 1 No |
What is flashback in Oracle?
how do u setup a replication site?
How to use "if" statements on multiple conditions?
What are the types of partitions in oracle?
how table is defined in plsql table? how can i select column from plsql table? can i use select * from plsql table type?
How to get execution path reports on query statements?
I want a table like, no name address addr1 addr2 So i want columns like addr1,addr2 under address column. Can one please answer me. Advance Thanks.
what is the difference between first normal form & second normal form?
what is the maximum number of indexes i can create for a table? What happens if i create indexes for all the columns of a table? Will it slow down the speed of retrieval
What is Hash Index?
Explain a synonym?
Name the various constraints used in oracle?