On Wed, Jan 7, 2009 at 1:48 PM, Jerry Schwartz
<jschwa...@the-infoshop.com> wrote:
>
>
>>-----Original Message-----
>>From: baron.schwa...@gmail.com [mailto:baron.schwa...@gmail.com] On
>>Behalf Of Baron Schwartz
>>Sent: Wednesday, January 07, 2009 9:54 AM
>>To: Jerry Schwartz
>>Cc: mysql@lists.mysql.com
>>Subject: Re: Limit within groups
>>
>>On Tue, Jan 6, 2009 at 3:13 PM, Jerry Schwartz
>><jschwa...@the-infoshop.com> wrote:
>>> Each account has multiple customers, and each customer has multiple
>>sales. I
>>> want to get the top 20 customers for each account.
>>
>>http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-
>>row-per-group-in-sql/
>>
>>Keep reading, it talks about top N per group later on in the post.
>>"Select the top N rows from each group"
>>
> [JS] Thanks for the pointer. Unless I'm misunderstanding them, none of the
> techniques look very promising. I need the top 20 customers for each of 15
> or more accounts, but each customer has many records so I need to rank them
> by sum() for each customer and then select the first 20 for each account.

This is one way to do what you need, depending on your data (doesn't
always work):

select type, variety, price
from fruits
where (
   select count(*) from fruits as f
   where f.type = fruits.type and f.price < fruits.price
) <= 2;

Vary the "2" to get what you want.
-- 
Baron Schwartz, Director of Consulting, Percona Inc.
Our Blog: http://www.mysqlperformanceblog.com/
Our Services: http://www.percona.com/services.html

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to