MySQL Forums
Forum List  »  Newbie

Re: RANK() emulator?
Posted by: Rick James
Date: November 09, 2009 08:18PM

Well, another little step forward...
I think this will deal with ties, both before 10th, and on 10th. For example,
#  points:  123 111 111 77 66 55 55 55 44 33 33
#  Rank:      1   2   2  4  5  6  6  6  9 10 10 -- desired output?
#  @seq:      1   2   3  4  5  6  7  8  9 10 11 -- helper value
SELECT  @seq := 0,      -- raw 1,2,3,...
        @rank := 0,     -- rank, allowing for ties
        @prev := 999999999;  -- for catching ties
SELECT  Rank, gamer, point
    FROM (
        SELECT  @seq := @seq + 1 AS seq,
                @rank := IF(@prev = point, @rank, @seq) AS Rank,
                gamer,
                point
            FROM  (
                SELECT gamer, SUM(score) as point
                    FROM score_ranked s
                    GROUP BY  gamer
                    ORDER BY  point DESC; 
                  ) x
         ) y
    WHERE Rank <= 10
    ORDER BY Rank, gamer

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