我已经搜索和搜索,但无法使其正常工作。如果有人可以帮助我,我将不胜感激。
我有一个存储所玩游戏信息的表格(小测验应用程序)。我需要能够根据得分最高,其次是最低时间来确定排名前 5 的玩家。(许多玩家有最高分)。我还需要确定任何给定时间的用户排名。
这是游戏桌的示例:
user_id 学分 time_played 别名 -------- ------- ------------ -------------- 64 490 180 达普拉亚 93 690 187 超人 64 336 187 达普拉亚 75 196 192 薄片 93 182 197 超人 57 844 198 约翰·史密斯 75 350 198 薄片 64 858 384 达普拉亚 73 858 400 小家伙 57 858 412 约翰·史密斯 101 858 420 闪光灯 73 858 423 小家伙 73 858 434 小家伙 65 858 460 希娜 122 858 540 糖皇后 126 858 545 雷切尔 176 350 2417 火光 157 350 2442 大Q 161 350 2456 乔伊蓝
我正在使用的当前查询是这样的:
select top 5 alias,user_id,
rank() over (order by max(credits) desc,min(time_played)) as rank
from games,users
where games.user_id=users.id and users.id <> 20 and games.credits > 0
group by user_id,alias
(从查询中可以看出,别名实际上存储在 users 表中。)
我认为这个查询有效,因为它似乎显示了正确的结果,但是现在该网站已经上线,并且我有成千上万的游戏,我可以看出它是错误的。
上面的查询基本上给了我 5 个可能得分最高的玩家,但它对他们的最低游戏时间进行了排名。(因此得分较低的游戏速度更快)。
请让我知道如何调整/修改此查询或完全重写它。
(注意,我可以使用带有循环的 php 来简单得多,但这不会很有效。)
如果需要,我很乐意提供更多信息。
在此先感谢,亚伦。