Сложные вычисления в таблице лидеров с помощью запроса SELECT - PullRequest
0 голосов
/ 22 апреля 2019

Я столкнулся с большой проблемой из-за моих несуществующих навыков работы с SQL.

У меня действительно есть эта таблица.

enter image description here

Я бы хотел ранжировать пользователей на каждом уровне, как этот,

enter image description here

поэтому я могу добавить каждый ранг каждого пользователя на каждом уровне, чтобы создать глобальный рейтинг.

enter image description here

Я довольно плохо знаком с mySQL, поэтому я хотел бы знать, возможно ли это одним запросом SELECT или возможно.

Спасибо.

1 Ответ

0 голосов
/ 22 апреля 2019

В 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

Примечание. Ожидаемые результаты немного сбивают с толку, поэтому вам, вероятно, придется настроить этот запрос, как только вы ответите на вопросы, которые я задавал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...