Rank MySQL for uses

问题描述 投票:0回答:1

我需要为我应该执行的任务提供帮助。我有一张表,其中包含以下字段:1)用户名2)得分3)比赛

每个用户名可以多次出现在表中,因此他可以得到多个分数。无论如何,用户名只能与一个国家/地区关联。

下面是我的表格示例:

Username !! Country || Score
Bob       ! Italy   !   100
Bob       ! Italy   !   150
Christian ! Italy   !   500
Christian ! Italy   !   200
Fred      | Germany |  80
Carl      | Germany |  700
Charlie   | France  |   400
Charlie   | France  |  280
Jean      | France  |   90

[我将得到一个MYSQL命令来获得他所在国家/地区中每个用户的排名,只考虑他的最佳成绩,而放弃其他人。

因此,我的理想输出应为:

基督教徒在意大利排名第一鲍勃在意大利排名第二卡尔在德国排名第一[]

弗雷德在德国排名第二]

查理在法国排名第一吉恩在法国排名第二[]

我可以订购用户并确定他们的等级,但要输入所有条目。我想拥有的只是分数最高的排名。

非常感谢您的帮助,

非常感谢

我需要为我应该执行的任务提供帮助。我有一张桌子,其中包含以下字段:1)用户名2)得分3)竞争每个用户名可以多次出现在表中,...

如果您正在运行MySQL 8.0,则可以使用聚合和窗口函数rank()进行此操作

select 
    username,
    country,
    max(score) top_score,
    rank() over(partition by country order by max(score) desc) country_rank
from mytable
group by username, country
order by country, country_rank
mysql sql sql-order-by rows rank
1个回答
0
投票

如果您正在运行MySQL 8.0,则可以使用聚合和窗口函数rank()进行此操作

© www.soinside.com 2019 - 2024. All rights reserved.