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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage