mysql相同分数并列排名

烟碎雨落花甽醉 7个月前 160浏览 0评论

在MySQL中,如何实现相同分数并列排名呢?可以使用如下的 SQL 语句:

SELECT score, DENSE_RANK() OVER (ORDER BY score DESC) as rank FROM students;

以上语句会返回每个学生的分数和排名。需要注意的是,我们使用了 DENSE_RANK 函数来实现并列排名,而不是使用 RANK 函数。两者的区别在于如果有并列的情况下,DENSE_RANK 会跳过排名,并按照下一个排名继续计算,而 RANK 则会留下空位。

一个示例数据:

CREATE TABLE students (
  name VARCHAR(50),
  score INT
);

INSERT INTO students (name, score) VALUES
('小明', 90),
('小红', 95),
('小刚', 85),
('小华', 95);

以上数据中,小红和小华的分数相同,我们希望他们可以并列排名。使用以上的 SQL 语句,我们可以得到以下结果:

+-------+------+
| Score | Rank |
+-------+------+
|    95 |    1 |
|    95 |    1 |
|    90 |    3 |
|    85 |    4 |
+-------+------+

以上就是在 MySQL 中实现相同分数并列排名的方法,希望对大家有所帮助!