MySQL Forums
Forum List  »  Newbie

Re: RANK() emulator?
Posted by: Tom Grant
Date: November 09, 2009 05:38PM

Rick

That worked great on numbering row.
USE leaderboard;
SELECT @rank := 0;
SELECT @rank := @rank + 1 AS Rank, gamer,
point
FROM (
SELECT gamer, SUM(score) as point
FROM score_ranked s
GROUP BY gamer
Order By point DESC
) x;

Like you said will need to deal with ties.

In leaderboard it deal with ties on individual game ties with this query.
USE leaderboard;

set @rank := 0, @pos := 0, @game := null, @score := null;

select gamer, game, score,
greatest(
-- Calculate current row's rank
@rank := if(@game = game and @score = score, @rank, if(@game <> game, 1, @rank + 1)),
-- Save score and game for next row
least(0, @score := score),
least(0, @game := game)) as rank
from score order by game desc, score desc;

How would you incorporate your query into it and may it work?

Tom

Options: ReplyQuote


Subject
Written By
Posted
September 21, 2009 01:25PM
September 21, 2009 01:33PM
September 21, 2009 02:09PM
September 21, 2009 04:23PM
November 07, 2009 10:27AM
November 11, 2009 03:18PM
November 08, 2009 03:52PM
November 09, 2009 10:56AM
November 09, 2009 04:42PM
Re: RANK() emulator?
November 09, 2009 05:38PM
November 09, 2009 08:18PM
November 10, 2009 06:21PM
November 10, 2009 09:22PM
November 11, 2009 09:19AM
November 11, 2009 08:36PM
November 12, 2009 08:39AM
November 12, 2009 08:00PM
November 13, 2009 06:41PM
November 17, 2009 10:35PM
November 19, 2009 10:35AM
November 17, 2009 10:38PM
November 19, 2009 10:16AM
November 19, 2009 10:32AM
November 19, 2009 10:39AM
November 19, 2009 10:45AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.