View previous topic :: View next topic
|
Author |
Message |
sureshbait Warnings : 1 New User
Joined: 02 Feb 2007 Posts: 5 Location: Chennai
|
|
|
|
I want to select fourth largest value of an attribute
ex. salary
any one help me to do this ASD SAD |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
Hello,
If you look in the db2 forum others have asked for things very similar. . .
Quote: |
HOW TO GET THE 5TH MAX SALARY USING QUERY? |
Quote: |
Nth maximum salary |
Quote: |
The best optimum query to find nth highest salary |
Lots of people with the same homework . . . . |
|
Back to top |
|
|
stodolas
Active Member
Joined: 13 Jun 2007 Posts: 632 Location: Wisconsin
|
|
|
|
Code: |
SELECT MIN(SALARY)
FROM (SELECT SALARY
FROM TABLE
ORDER BY SALARY
FETCH FIRST 4 ROWS ONLY)
WITH UR
|
|
|
Back to top |
|
|
nuthan
Active User
Joined: 26 Sep 2005 Posts: 146 Location: Bangalore
|
|
|
|
try this one also.
SELECT MIN(SALARY) FROM TABLE WHERE SALARY IN (SELECT SALARY
FROM TABLE ORDER BY SALARY FETCH FIRST 4 ROWS ONLY)
WITH UR; |
|
Back to top |
|
|
stodolas
Active Member
Joined: 13 Jun 2007 Posts: 632 Location: Wisconsin
|
|
|
|
The IN clause is redundant. You only have four rows in your return set so basically you are saying make sure the salary is in those 4 rows then give the miminum of those 4 rows. What happens if you run an explain on mine vs yours? |
|
Back to top |
|
|
sri_mf
Active User
Joined: 31 Aug 2006 Posts: 218 Location: India
|
|
|
|
SELECT SAL FROM EMP A WHERE N=(SELECT SAL FROM EMP B WHERE
B.SAL >=A.SAL)
Here u can replace N with 4 |
|
Back to top |
|
|
raviprasath_kp Warnings : 1 New User
Joined: 20 Feb 2005 Posts: 65 Location: chennai
|
|
|
|
SELECT E1.SALARY FROM EMP E1 WHERE 5 =(
SELECT COUNT( DISTINCT E2.SALARY ) FROM EMP E2 WHERE
E2.SALARY <= E1.SALARY ); |
|
Back to top |
|
|
nuthan
Active User
Joined: 26 Sep 2005 Posts: 146 Location: Bangalore
|
|
|
|
Hi Ravi,
Have you tried the query which you have given. |
|
Back to top |
|
|
sri_mf
Active User
Joined: 31 Aug 2006 Posts: 218 Location: India
|
|
|
|
sri_mf wrote: |
SELECT SAL FROM EMP A WHERE N=(SELECT SAL FROM EMP B WHERE
B.SAL >=A.SAL)
Here u can replace N with 4 |
Small change in my Query
SELECT SAL FROM EMP A WHERE N=(SELECT COUNT(*) FROM EMP B WHERE
B.SAL >=A.SAL)
This will work fine..
Corect me if i m wrong |
|
Back to top |
|
|
stodolas
Active Member
Joined: 13 Jun 2007 Posts: 632 Location: Wisconsin
|
|
Back to top |
|
|
|