MIDRANGE dot COM Mailing List Archive



Home » MIDRANGE-L » July 2008

RE: Sql retrieve first 10 rows



fixed

Your statement would not work.

You are not using DENSE_RANK ( or RANK ) correctly. It makes no sense to partition and order by the
same column when using DENSE_RANK() (or RANK) as you'll end up with a rank of 1 for all rows.

Now if the OP was asking for the top 10 amounts by branch, then DENSE_RANK (or RANK) would be the
correct function.

with tempTable ( BRANCH_CODE, AMOUNT, ROW_SEQ )
as ( select BRANCH_CODE,
AMOUNT,
dense_rank()
over (partition by BRANCH_CODE
order by AMOUNT desc)
as ROW_SEQ )
select * from tempTable where ROW_SEQ <= 10


However, in this case the OP just wanted the first 10 rows. Thus, ROW_NUMBER() is the correct
function to use.




HTH,

Charles Wilt
--
Software Engineer
CINTAS Corporation - IT 92B
513.701.1307

wiltc@xxxxxxxxxx


-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx [mailto:midrange-l-
bounces@xxxxxxxxxxxx] On Behalf Of John Taylor
Sent: Tuesday, July 22, 2008 10:31 AM
To: 'Midrange Systems Technical Discussion'
Subject: RE: Sql retrieve first 10 rows

-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx [mailto:midrange-l-
bounces@xxxxxxxxxxxx] On Behalf Of beppecosta

I have a table that contains 2 fields: branch code and amount.
Is is possible to exctract the first 10 rows for each branch ?
Thanks.



Look at the DENSE_RANK() feature available as of V5R4. The following code
should get you started, but it's just off the top of my head, so hasn't
been
tested:


with tempTable ( BRANCH_CODE, AMOUNT, ROW_SEQ )

as ( select BRANCH_CODE,
AMOUNT,
dense_rank() over (partition by BRANCH_CODE order by
BRANCH_CODE)
as ROW_SEQ )

select * from tempTable where ROW_SEQ <= 10


Regards,

John Taylor



--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.




This e-mail transmission contains information that is intended to be confidential and privileged. If you receive this e-mail and you are not a named addressee you are hereby notified that you are not authorized to read, print, retain, copy or disseminate this communication without the consent of the sender and that doing so is prohibited and may be unlawful. Please reply to the message immediately by informing the sender that the message was misdirected. After replying, please delete and otherwise erase it and any attachments from your computer system. Your assistance in correcting this error is appreciated.





Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2014 by MIDRANGE dot COM and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available here. If you have questions about this, please contact