gpt4 book ai didi

mysql - 如何计算mysql中的排名?

转载 作者:行者123 更新时间:2023-11-29 02:03:18 31 4
gpt4 key购买 nike

我有一个包含两列“student_id”和“mark”的表“student_marks”:

student_id | marks
-------------------
1 | 5
2 | 2
3 | 5
4 | 1
5 | 2

我需要计算分数对应的排名。上表的预期输出是:

student_id | marks  | rank
-------------------------
1 | 5 | 1
2 | 2 | 3
3 | 5 | 1
4 | 1 | 5
5 | 2 | 3

由于 students_id 为 1 和 3 的两个学生的分数最高为 5,因此他们排在第 1 位。对于分数为 2 的学生,排名为 3,因为有两个学生的分数比这些人高。

我们如何编写查询来计算如上所示的排名?

最佳答案

这应该可以工作,尽管它对变量很重要。

SELECT student_id, mark, rank FROM (
SELECT t.*,
@rownum := @rownum + 1 AS realRank,
@oldRank := IF(mark = @previous,@oldRank,@rownum) AS rank,
@previous := mark
FROM student_marks t,
(SELECT @rownum := 0) r,
(SELECT @previous := 100) g,
(SELECT @oldRank := 0) h
ORDER BY mark DESC
) as t
ORDER BY student_id;

看看这个 fiddle :http://sqlfiddle.com/#!2/2c7e5/32/0

关于mysql - 如何计算mysql中的排名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11072172/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com