IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Query to find nth max salary in table EMP


IBM Mainframe Forums -> DB2
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
anshul_gugnani

New User


Joined: 02 Nov 2009
Posts: 73
Location: Mumbai

PostPosted: Fri Feb 12, 2010 2:14 pm
Reply with quote

Hi,

Can Anyone please explain me the logic behind the below query to find the nth max salary in EMP table -

Quote:
select sal from emp A where n =

( select count(*) from emp B where A.sal < B.sal )





Thanks
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Fri Feb 12, 2010 2:16 pm
Reply with quote

topic moved where it belongs!
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Fri Feb 12, 2010 2:28 pm
Reply with quote

Hello,

Suggest you write down 5 "salaries" and manually step thru the process.

This will quickly show what happens when the query processes.
Back to top
View user's profile Send private message
anshul_gugnani

New User


Joined: 02 Nov 2009
Posts: 73
Location: Mumbai

PostPosted: Fri Feb 12, 2010 3:21 pm
Reply with quote

Hi
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Fri Feb 12, 2010 10:38 pm
Reply with quote

Quote:
Hi
Well, it is a start. . . icon_confused.gif
Back to top
View user's profile Send private message
anshul_gugnani

New User


Joined: 02 Nov 2009
Posts: 73
Location: Mumbai

PostPosted: Fri Feb 12, 2010 11:15 pm
Reply with quote

Hi, Say I have 5 salaries as -

12, 25, 13, 78, 03

According to
Quote:
select count(*) from emp B where A.sal < B.sal


each salary will have a count for which it is greater then other salaries in table.

So result for records will be this will be -

3, 1, 3, 0, 4

Now, According to
Quote:
select sal from emp A where (n-1) =



25 is salary whose count is equal to (n-1).

Please suggest if my understanding is correct. I think this co-related subquery.

Thanks!
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Sat Feb 13, 2010 3:01 am
Reply with quote

Hello,

Other than the typo (3, 1, 3, 0, 4) , i believe you have it correctly icon_smile.gif

Also - Fromthe db2 manual (i added the bold for emphasis):
Quote:
A subquery is actually executed for each row of R only if it includes a correlated reference. In fact, a subquery with no correlated references is executed just once, whereas a subquery with a correlated reference may have to be executed once for each row.
Back to top
View user's profile Send private message
anshul_gugnani

New User


Joined: 02 Nov 2009
Posts: 73
Location: Mumbai

PostPosted: Sat Feb 13, 2010 3:15 pm
Reply with quote

Hi,

Quote:
Other than the typo (3, 1, 3, 0, 4) ,


Could you please explain as to why this is wrong??

Thanks
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Sat Feb 13, 2010 3:57 pm
Reply with quote

Hello,

Maybe 3, 1, 2, 0, 4 . . .?
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DB2

 


Similar Topics
Topic Forum Replies
No new posts Load new table with Old unload - DB2 DB2 6
No new posts Pulling a fixed number of records fro... DB2 2
No new posts To find whether record count are true... DFSORT/ICETOOL 6
No new posts RC query -Time column CA Products 3
No new posts Multiple table unload using INZUTILB DB2 2
Search our Forums:

Back to Top