Я хочу написать запрос MySQL для ранжирования баллов. Если есть ничья между двумя результатами, оба должны иметь одинаковый рейтинг. также после ничьей следующим номером рейтинга должно быть следующее последовательное целое значение. Другими словами, между рядами не должно быть «дыр».
+----+-------+
| Id | Score |
+----+-------+
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
+----+-------+
учитывая приведенную выше таблицу результатов, запрос должен генерировать следующий отчет (в порядке наибольшего балла)
+-------+------+
| Score | Rank |
+-------+------+
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
+-------+------+
я попробовал что-то вроде приведенного ниже набора @pk1 = ''; установить @rn1 =1; установить @val =1;
SELECT score,Rank
FROM
(
SELECT score,
@rn1 := if(@pk1=score,@rn1, @rn1+@val) as Rank,
@val := if(@pk1=score,@val+1, 1 ) as value,
@pk1 := score
FROM
(SELECT score FROM scores ORDER BY score) as rank) as scores;
но вышеперечисленное не сработало, может ли кто-нибудь помочь в этом