gpt4 book ai didi

SQL,如何按分数排序并获取ID在排序列表中的位置

转载 作者:行者123 更新时间:2023-12-04 17:47:03 25 4
gpt4 key购买 nike

这是我的:

SELECT * FROM scores WHERE userId ="${message.author.id}"

这将在分数表中获取 userId${message.author.id} 的行。

我想用这个:

SELECT * FROM scores ORDER BY points

现在我不知道从这里做什么。我想获取此有序列表并获取具有 ${message.author.id}userId 的行的位置。

所以我基本上想根据每个用户拥有的点数对表进行排序,然后我想使用 userId 来查看该用户所处的位置。

示例:

userId   points
1 20
2 30
3 10
4 25

当我使用它时:

SELECT * FROM scores ORDER BY points DESC

现在应该是这样的:

userId   points
2 30
4 25
1 20
3 10

然后我想获取特定 userId 所在的行的位置。所以如果我获取 userId = 1 的行,我想退出:3 .

我该怎么做?谢谢。

最佳答案

您需要一个排名函数,这可以通过相关子查询来完成。

select userid,points,
(select count(distinct points) from scores where points >= s.points) as rnk
from scores s

然后查询所需的用户 ID。

select rnk 
from (select userid,points,
(select count(distinct points) from scores where points >= s.points) as rnk
from scores s
) t
where userid=1 --change this as required

如果您的 dbms 支持窗口函数,请使用 dense_rank

select rnk
from (select userid,points,dense_rank() over(order by points desc) as rnk
from scores s
) t
where userid=1

关于SQL,如何按分数排序并获取ID在排序列表中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48025139/

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