gpt4 book ai didi

MySQL - 如何确定按两列排序的表的位置排名并允许平局?

转载 作者:行者123 更新时间:2023-11-29 06:31:46 25 4
gpt4 key购买 nike

我有一个表格(锦标赛),其中包含球队列表及其累积积分和净胜球(进球数 - 失球数)。

比赛

+-----------+--------+-----------+
| team | points | goal_diff |
+-----------+--------+-----------+
| USA | 7 | -2 |
| Brazil | 12 | +7 |
| Argentina | 12 | +10 |
| Germany | 7 | -2 |
| Italy | 3 | 0 |
+-----------+--------+-----------+

如何按积分排名,然后按净胜球排名,保持相同排名并跳过后续排名?我正在寻找产生此最终结果的查询:

+-----------+--------+-----------+------+
| team | points | goal_diff | rank |
+-----------+--------+-----------+------+
| Argentina | 12 | +10 | 1 |
| Brazil | 12 | +7 | 2 |
| USA | 7 | -2 | 3 |
| Germany | 7 | -2 | 3 |
| Italy | 3 | 0 | 5 |
+-----------+--------+-----------+------+

我已经能够对它们进行排名并通过分数列保持相同的关系,但不知道如何包含第二列条件

SELECT s.team, s.points, s.goal_diff,
(( SELECT COUNT(DISTINCT points) FROM Tournament WHERE points > s.points ) + 1) AS rank
FROM Tournament s
ORDER BY s.points DESC

感谢您的帮助!

最佳答案

对于任何试图解决这个问题的人,我最终将我的数据库升级到 MariaDB 10.3.14 并使用了 RANK() 函数,它正是我所需要的。

代码如下:

SELECT team, points, goal_diff,
RANK() OVER (
ORDER BY
points DESC,
goal_diff DESC
) rank
FROM Tournament;

我知道升级数据库可能不是每个人的选择,但对我来说这是一个非常简单的解决方案。希望对其他人也有帮助。

关于MySQL - 如何确定按两列排序的表的位置排名并允许平局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55863540/

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