Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我需要一个如何开始这个查询的线索_Sql_Oracle_Express_Variables_Join - Fatal编程技术网

Sql 我需要一个如何开始这个查询的线索

Sql 我需要一个如何开始这个查询的线索,sql,oracle,express,variables,join,Sql,Oracle,Express,Variables,Join,图片显示了我的数据库的一部分是什么样子 我想有一个球员的排名,比如说显示上周左右十名最好的球员,他们的分数和昵称的总和存储在表users中。我知道我需要从比赛历史中总结分数。问题是我不知道如何将用户与他们的观点联系起来,然后总结整个事情 有人能给我一个线索吗?集中你的数据,汇总你的分数,建立一个等级,然后根据你的需要调整(日期>=随便什么,等级>=x)。像这样的。未经测试,但它会让你开始 with mypiv as ( select gh.game_id, u.user_id, u.nickna

图片显示了我的数据库的一部分是什么样子

我想有一个球员的排名,比如说显示上周左右十名最好的球员,他们的分数和昵称的总和存储在表users中。我知道我需要从比赛历史中总结分数。问题是我不知道如何将用户与他们的观点联系起来,然后总结整个事情


有人能给我一个线索吗?

集中你的数据,汇总你的分数,建立一个等级,然后根据你的需要调整(日期>=随便什么,等级>=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

您是只使用games_history.user_1还是使用所有的user_n字段?所有的user_n字段。User\u n是users中用户的ID,所以我需要将User\n\u点与User\n匹配,然后对每个用户进行相加。一行中的User\u 2是否也可以是另一行中的User\u 1?games_history.user_n是否可以为任何列的null?是的,用户_1可以在一个游戏中具有id 1,然后在另一个游戏中具有id 2。所以第一个游戏中的用户_1_点数将用于id为1的用户,但第二个游戏中的用户_点数将用于id为2的用户。用户_3和用户_4可以为空,必须有两名玩家才能开始游戏。使用一些查询显示一些代码,这些查询提取一些数据与解决方案相关的表。请参见文本上方的投票箭头(&S)。请在代码问题中给出一个--cut&paste&runnable代码;具有期望和实际输出的示例输入(包括逐字错误消息);清晰的说明和解释。这包括您能给出的最少代码,即您显示为OK的代码,由您显示为not OK的代码扩展。非常感谢,这让我得到了每场比赛的排名。现在,我如何总结所有游戏的得分来获得整体排名?我的意思是,玩家的排名是通过所有游戏的点数总和来排名最佳玩家。如果你不想按每个游戏排名,只需从“partition by”子句中删除“game_id”,并输入一个虚拟值:从mypiv中选择user_id、昵称、rank()over(按“1”按点数顺序划分)作为myrank;