【问题标题】:Oracle SQL - Add 2 numbers, show maximum number and show name from another tableOracle SQL - 添加 2 个数字,显示最大数字并显示另一个表的名称
【发布时间】:2013-05-05 15:22:22
【问题描述】:

我正在尝试查询我的数据库并且我有几个表。

第一张桌子是玩家桌子。这有 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
;

【问题讨论】:

    标签: sql oracle inner-join max


    【解决方案1】:

    您可以使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多