gpt4 book ai didi

mysql - 如何在MySQL中对具有相同权重的记录进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 11:45:27 24 4
gpt4 key购买 nike

假设我有一个数据说:

  Name   | Marks   
StudentA | 90
StudentB | 85
StudentC | 85
StudentD | 70

现在学生 A 将获得第 1 名,学生 B 和学生 C 将获得第 2 名,学生 D 将获得第 4 名。

如果没有重复的权重,我知道基本的排名计算,但是如果我们遇到 2 个相似的权重如何处理,因为在这种情况下有两个 85 标记将共享排名 2。

最佳答案

使用 Giorgos 的 fiddle ......

SELECT name
, marks
, FIND_IN_SET(marks, (SELECT GROUP_CONCAT(marks ORDER BY marks DESC) FROM mytable)) rank
FROM mytable;

| Name | Marks | rank |
|----------|-------|------|
| StudentA | 90 | 1 |
| StudentB | 85 | 2 |
| StudentC | 85 | 2 |
| StudentD | 70 | 4 |

http://sqlfiddle.com/#!9/7cc30/6

SELECT name, marks, rank
FROM (SELECT name
, marks
, @prev := @curr
, @curr := marks
, @i:=@i+1 temp
, @rank := IF(@prev = @curr, @rank, @i) AS rank
FROM mytable
, ( SELECT @curr := null, @prev := null, @rank := 0, @i:=0) vars
ORDER
BY marks DESC,name
) x
ORDER
BY marks DESC,name

http://sqlfiddle.com/#!9/287e07/9

关于mysql - 如何在MySQL中对具有相同权重的记录进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39214022/

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