1

我试图查询我的数据库,我有几个表。

第一个表是玩家表。这有 PlayerID 和 FirstName 以及一堆与此问题无关的其他内容。

我的另一张桌子是经验。这有 PlayerID、NatGames 和 Int Games。

我想做的是,将 NatGames 和 IntGames 加在一起并显示最高结果。我可以使用这样的 max 函数来做到这一点:

select max (natgames + intgames) AS "Most Expiercened" from experience;

当这两个数字相加时,这将显示最大的数字。

现在我想做的是显示这个人的名字,它应该来自来自 Player 表的 playerID。

我已经尝试了几个小时,但我无法做到这一点。我有这样的事情,但失败了:

SELECT Player.Firstname, Experience.Natgames, Experience.Intgames
FROM Player
INNER JOIN Experience
ON Experience.PlayerID = Player.PlayerID
INNER JOIN (
SELECT Experience.PlayerID, MAX(Natgames + IntGames) AS TotalExperience
FROM Experience
GROUP BY Experience.PlayerID
) as TotalExperience
ON Experience.PlayerID = TotalExperience.ID
AND (NatGames + Intgames) = TotalExperience.TotalExperience
;
4

1 回答 1

0

您可以使用row_number()查找最高的行NatGames + IntGames

select  p.Name
,       e.NatGames + e.IntGames
from    (
        select  row_number() over (order by NatGames + IntGames desc) as rn
        ,       PlayerID
        ,       NatGames
        ,       IntGames
        from    Experience
        ) e
join    Players p
on      p.PlayerID = e.PlayerID 
where   e.rn = 1 -- Row #1 when sorted by NatGames + IntGames desc
于 2013-05-05T15:24:40.427 回答