MySQL - Wie man einen Oracle RANK () OVER macht (ORDER BY score DESC)
Ich kenne Oracle und würde normalerweise einen RANK () (ORDER BY score DESC) AS-Rang vergeben, um einen Rang wie diesen zu erhalten:
Score | Rank
--------------
100 | 1
100 | 1
99 | 3
98 | 4
98 | 4
98 | 4
97 | 7
Ich habe keine Ahnung, wie das in MySQL geht - nachdem ich hier nachgesehen habe, habe ich Folgendes gefunden:
SET @prev_value = NULL;
SET @rank_count = 0;
SELECT score
, CASE
WHEN @prev_value = score
THEN @rank_count
WHEN @prev_value := score
THEN @rank_count := @rank_count + 1
END AS rank
FROM ...
aber das gibt es zurück als:
Score | Rank
--------------
100 | 1
100 | 1
99 | 2
98 | 3
98 | 4
98 | 4
97 | 5
Welches ist nicht ganz das, was ich wollte.