SELECT查询的复杂排行榜计算

时间:2019-04-22 14:20:37

标签: mysql select phpmyadmin

由于我不具备SQL技能,因此我在这里面临着一个大问题。

我实际上有这张桌子。

enter image description here

我想在每个级别上对用户进行排名,

enter image description here

然后我可以在每个级别上添加每个用户的每个等级,以进行全局排名。

enter image description here

我对MySQL很陌生,所以我想知道一个SELECT查询是否可能。

谢谢。

1 个答案:

答案 0 :(得分:0)

在MySQL 8.x中,您可以使用RANK()DENSE_RANK()函数来执行所需的操作。例如:

with
a as (
  select
    level, user, score,
    rank() over(partition by level order by score) as rk
  from t
),
r as (
  select
    user,
    sum(rk) as score
  from a
  group by user
)
select
  rank() over(order by score),
  user, score
from r

注意:您的预期结果有点令人困惑,因此一旦回答我提出的问题,您可能需要调整此查询。