SQL查询对分数进行排名

时间:2024-01-06 23:50:56

编写SQL查询以对分数进行排名。 如果两个分数之间存在平局,则两者应具有相同的排名。 请注意,在平局之后,下一个排名数应该是下一个连续的整数值。 换句话说,等级之间不应该存在“漏洞”。

  1. +----+-------+
  2. | Id | Score |
  3. +----+-------+
  4. | 1 | 3.50 |
  5. | 2 | 3.65 |
  6. | 3 | 4.00 |
  7. | 4 | 3.85 |
  8. | 5 | 4.00 |
  9. | 6 | 3.65 |
  10. +----+-------+

例如,给定上面的scores表,您的查询应生成以下报告(按最高分数排序):

  1. +-------+------+
  2. | Score | Rank |
  3. +-------+------+
  4. | 4.00 | 1 |
  5. | 4.00 | 1 |
  6. | 3.85 | 2 |
  7. | 3.65 | 3 |
  8. | 3.65 | 3 |
  9. | 3.50 | 4 |
  10. +-------+------+

实现sql如下:

select Score, (select count(distinct Score) from scores where Score >= mq.Score) Rank from scores as mq order by Score desc