Мне нужно понять, как начать с этого запроса - PullRequest
0 голосов
/ 23 мая 2019

enter image description here

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

Я хочу получить рейтинг игроков, который показывает, например, десять лучших игроковс прошлой недели или около того с суммой их очков и псевдонимов, которые хранятся в таблице пользователи .Я знаю, что мне нужно суммировать очки из games_history .Проблема в том, что я не знаю, как связать пользователей с их баллами, а затем подвести итог всему.

Может кто-нибудь дать мне подсказку?

1 Ответ

0 голосов
/ 23 мая 2019

Поверните свои данные, суммируйте свои результаты, постройте рейтинг, затем подберите подходящее значение (дата> = все, ранг> = x).Что-то вроде этого.Не проверено, но это поможет вам начать.

with mypiv as (
select gh.game_id, u.user_id, u.nickname,
       sum(case when gu.user_id = gh.user_1 then user_1_points
        when gu.user_id = gh.user_2 then user_2_points
        when gu.user_id = gh.user_3 then user_3_points
        when gu.user_id = gh.user_4 then user_4_points
        else 0 end) as points            
  from users  u
   ,games_history gh
 where 1=1
   and (u.user_id = gh.user_1 or
    u.user_id = gh.user_2 or
    u.user_id = gh.user_3 or
    u.user_id = gh.user_4)
group by gh.game_id,u.user_id, u.nickname)


select game_id, user_id, nickname, 
   rank() over (partition by game_id order by points) as myrank
from mypiv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...