I think that answer is (because I group on user field):

create temporary table usertempcnt
     SELECT *,(@a:= IF(@b=user,@a+1,1)) as cnt , @b:=user from users order
by
user,points desc;

Thanks for advice on temporary table and great example!

Anzej

P.S. Sorry form misspelled subject: "nest" should be "best" :)

----- Original Message -----
From: "Richard Clarke" <[EMAIL PROTECTED]>
To: "Richard Clarke" <[EMAIL PROTECTED]>; "Anzej Becan"
<[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Monday, March 11, 2002 6:36 PM
Subject: Re: How to sum only nest N values?


> argh read your scheme wrong
> answer should be:
>
> create temporary table usertempcnt
>      SELECT *,(@a:= IF(@b=id,@a+1,1)) as cnt, @b:=id from user order by
> user,points desc;
>
>  select *,sum(points) from usertmpcnt where cnt<=2;
>
>  where 2 is your N
>
> Regards,
>     Richard
>
> ----- Original Message -----
> From: "Richard Clarke" <[EMAIL PROTECTED]>
> To: "Anzej Becan" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
> Sent: Monday, March 11, 2002 5:26 PM
> Subject: Re: How to sum only nest N values?
>
>
> > create temporary table usertempcnt
> >     SELECT *,(@a:= IF(@b=id,@a+1,1)) as cnt, @b:=id from user order by
> > id,points desc;
> >
> > select *,sum(points) from usertmpcnt where cnt<=2;
> >
> > where 2 is your N
> >
> > Regards,
> >     Richard
> >
> > ----- Original Message -----
> > From: "Anzej Becan" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Monday, March 11, 2002 9:39 AM
> > Subject: Fw: How to sum only nest N values?
> >
> >
> > > I have table "users" with some results. Now I would like to sum up
> highest
> > > two points (not all!) for each user and sort by this sum.
> > > If I use this sql query...
> > >  SELECT user, SUM(points) total FROM users GROUP BY user ORDER BY
total
> > > desc;
> > > ... the result is sum of all points for each user.
> > > How to sum only highest two (or N) points?
> > >
> > > Thanks for any advice!
> > > Anzej
> > >
> > >
> > > Structure and data:
> > >
> > > CREATE TABLE users (
> > >   id tinyint(3) unsigned NOT NULL auto_increment,
> > >   user char(5) NOT NULL default '',
> > >   points tinyint(3) unsigned NOT NULL default '0',
> > >   PRIMARY KEY  (id),
> > >   UNIQUE KEY id (id)
> > > ) TYPE=MyISAM;
> > > INSERT INTO users VALUES (1, 'user1', 10);
> > > INSERT INTO users VALUES (2, 'user1', 20);
> > > INSERT INTO users VALUES (3, 'user1', 50);
> > > INSERT INTO users VALUES (4, 'user1', 40);
> > > INSERT INTO users VALUES (5, 'user2', 10);
> > > INSERT INTO users VALUES (6, 'user2', 20);
> > > INSERT INTO users VALUES (7, 'user2', 50);
> > >
> > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > Before posting, please check:
> > >    http://www.mysql.com/manual.php   (the manual)
> > >    http://lists.mysql.com/           (the list archive)
> > >
> > > To request this thread, e-mail <[EMAIL PROTECTED]>
> > > To unsubscribe, e-mail
> <[EMAIL PROTECTED]>
> > > Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
> > >
> >
> >
> > ---------------------------------------------------------------------
> > Before posting, please check:
> >    http://www.mysql.com/manual.php   (the manual)
> >    http://lists.mysql.com/           (the list archive)
> >
> > To request this thread, e-mail <[EMAIL PROTECTED]>
> > To unsubscribe, e-mail
<[EMAIL PROTECTED]>
> > Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
> >
>
>
>




---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to