I have a table which has float score, and I want to rank them from largest to smallest, if the same score, same ranking. I am using MySQL/MySQL Workbench, and any good ideas are appreciated.

Here is a sample input and output,

```
+----+-------+
| 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    |
+-------+------+

```

Tried the following query, but not working since it does not handle duplicate,

```
SELECT    id, score,
          @curRank := @curRank + 1 AS rank
FROM      TestRank tr, (SELECT @curRank := 0) r
ORDER BY  score desc;

```

In this above query, user 3 and user 5 have the same score value 4, but ranked differently.

I also tried the following query to just rank score itself, and it returns very weird results,

```
set @curRank := 0;
SELECT    distinct score, @curRank := @curRank+1 as rank
FROM      TestRank tr
ORDER BY  score desc;

```

[![enter image description here](https://i.stack.imgur.com/TBHBZ.png)](https://i.stack.imgur.com/TBHBZ.png)

thanks in advance,
Lin