Поверните свои данные, суммируйте свои результаты, постройте рейтинг, затем подберите подходящее значение (дата> = все, ранг> = 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