запрос mysql для выполнения функции ранжирования

Я хочу написать запрос 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;

но вышеперечисленное не сработало, может ли кто-нибудь помочь в этом


person sritharan    schedule 10.10.2016    source источник
comment
вам нужно посмотреть на написание хранимой процедуры   -  person Alex    schedule 10.10.2016
comment
нет, используй переменные   -  person Drew    schedule 10.10.2016