SQL-Query to find third highest
|
Newbie Member
|
|
| 4Mar2010,08:03 | #1 |
|
How to find third highest salary from emp table in Oracle.?
|
|
Skilled contributor
|
![]() |
| 4Mar2010,15:30 | #2 |
|
Code:
select sal from(select sal from
(select distinct sal from emp order by sal desc
where rownum<=3) order by sal asc)
where rownum=1;
|
|
Newbie Member
|
|
| 16Mar2010,19:29 | #3 |
|
Hi,
Thanks for your reply.I appreciate that. I tried that Query in SQL and it gives the following error: ERROR at line 3: ORA-00907: missing right parenthesis Could you please help further, as i think all parenthesis are closed. Thanks javapank |
|
Skilled contributor
|
![]() |
| 16Mar2010,22:01 | #4 |
|
Try this..itz working fine..
Code:
select sal from (select sal from (select distinct sal from ( select distinct sal from emp order by sal desc) where rownum<=3) order by sal asc) where rownum<=1; |
|
Newbie Member
|
|
| 23Mar2010,01:09 | #5 |
|
Thanks for your answer.I did little modification and still it works with the query:
select min(sal) from ( select distinct sal from emp order by sal desc) where rownum<=3 Let me know that will this query is perfect for all the kinds of data in the table. Thanks Java Pank |
|
Light Poster
|
|
| 6Apr2010,17:29 | #6 |
|
if you want to find 3rd highest or nth highest then do the following query.. just try this n let me know..
select * from emp e where (&n-1)=(select COUNT(salary) from emp where salary>e.salary); if U want nth lowest just put opreator "<" instead of putting ">". |
|
Light Poster
|
|
| 6Apr2010,17:29 | #7 |
|
if you want to find 3rd highest or nth highest then do the following query.. just try this n let me know..
select * from emp e where (&n-1)=(select COUNT(salary) from emp where salary>e.salary); if U want nth lowest just put opreator "<" instead of putting ">". Regards.. Sudhagar.V |
|
Light Poster
|
|
| 23Apr2010,10:12 | #8 |
|
Hi.. its very simple.. here is the query ..
select name,salary from(select name,salary,row_number() over(order by salary desc) rowno from emp_table) where rowno=3; or To find nth highest salary the following query to help u.. same as above.little changes.. instead of put '3' put '&rowno'..... select name,salary from(selectname,salary,row_number() over(order by salary desc) rowno from employee) where rowno=&rowno; |
|
Light Poster
|
|
| 23Apr2010,10:18 | #9 |
|
Quote:
Originally Posted by techgeek.in Hi.. the above query is wrong.. the correct query is selectname,salary from(selectname,salary,row_number()over(orderby salary desc) rowno fromemp_table)where rowno=3; if you want nth highest salary. then use '&rowno' in place of '3'. Ok.. |
|
Skilled contributor
|
![]() |
| 23Apr2010,23:17 | #10 |
|
did u notice that i have already posted the correct one after the wrong one...???
|


