【问题标题】:How do I use MAX and Count with two table如何在两个表中使用 MAX 和 Count
【发布时间】:2016-04-19 12:05:14
【问题描述】:

我有一个查询需要计算字段点数。然后返回最大值。这个查询做得很好,但是我现在想将另一个表'Team(PlayerID)与Player(PlayerID)链接起来,所以它显示了玩家团队的详细信息等。我试图在你如何加入表时正常执行此操作,但不断出现错误。我也不想使用 desc 的顺序 - 仅第一行。 (甲骨文)

查询:

SELECT PlayerID, COUNT(Points)

【问题讨论】:

  • 添加一些示例表数据和预期的结果!
  • 您所在查询的团队表在哪里?我想这只是有效的查询...但是如果您不显示无效的查询,您怎么能期待答案呢?
  • 是的,我想将团队表添加到此。 Player.TeamID = Team.TeamID .... 我需要做的就是添加来自团队表的“团队名称”。我在加入时遇到问题

标签: sql oracle


【解决方案1】:
SELECT t.*, p.* FROM
team t INNER JOIN
(SELECT PlayerID, COUNT(Points)
 FROM Player
 WHERE Points = 1
 group by PlayerID
 HAVING COUNT(Points) = (SELECT MAX(count(Points))
                         from Player
                         WHERE Points = 1
                         group by PlayerID)
) p
ON t.PlayerID = p.PlayerID

【讨论】:

  • 你是个天才!!完美无缺
【解决方案2】:
....
HAVING COUNT(Points) = (SELECT MAX(sub.cp)
                        from (SELECT count(Points) as cp
                              from Player
                              WHERE Points = 1
                              group by PlayerID) sub
                        )

【讨论】:

  • 我想加入团队表并在查询中添加列。 Player.TeamID = Team.TeamID
【解决方案3】:
SELECT A.PlayerID, a.TotalPoints, b.[stuff]
FROM (SELECT PlayerID, COUNT(Points)
        FROM Player
       WHERE Points = 1
      group by PlayerID
      HAVING COUNT(Points) = (SELECT MAX(count(Points))
                                from Player
                               WHERE Points = 1
                              group by PlayerID)) a
join TEAM b on b.playerid = a.playerid;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-15
    • 2014-05-26
    • 2010-09-24
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多