Input:
Scores table:
+----+-------+
| Id | Score |
+----+-------+
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
+----+-------+
Output:
+-------+------+
| Score | Rank |
+-------+------+
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
+-------+------+
ROW_NUMBER() OVER(ORDER BY Score) 123456
RANK() OVER(ORDER BY Score) 113446
DENSE_RANK() OVER(ORDER BY Score) 112334
需要在OVER()里 GROUP BY 的时候可以用PARTITION BY,并且必须在ORDER BY之前。
*顺序 WHERE GROUP BY ORDER BY LIMIT