MySQL Forums
Forum List  »  Newbie

Re: RANK() emulator?
Posted by: Tom Grant
Date: November 12, 2009 08:39AM

Rick
I don't understand why it would add hundred to top 10.
I change WHERE Rank <= 10 to WHERE Rank >= 0 and added 52 points it ranked all OK.
Your code worked as expected. With skip a rank and then pick it back up with all 50 that had a tie.
1. first place winner: rank 1
2. tie for second: rank 2
3. tie for second: rank 2 <--
4. next in line (4th place, not 3rd): rank 4 <--
6. etc.
I kind of understand why it ranks that way.
To me it would be interesting to see a tweak.
Going back to O'Reilly ONLamp.com. How to Optimize Rank Data in MySQL http://onlamp.com/pub/a/mysql/2007/03/01/optimize-mysql-rank-data.htm
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;


leaderboard Query
Ranks in order of 1,2,3,4,5,6, with ties counted ect.

laptop alias:
Your query did drag it locked MYSQL up. Had to end task to get out of query.

Thank you
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
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
Re: RANK() emulator?
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.