【问题标题】:Group by SQL query Beginner按 SQL 查询分组初学者
【发布时间】:2014-07-09 01:34:21
【问题描述】:

我对这个查询有疑问:

SELECT MAX(PL.BEST_RESULT), S.NAME, A.NAME
FROM PLAYS PL
    INNER JOIN ATHLETE A ON A.ID_ATHLETE = PL.ID_ATHLETE
    INNER JOIN SPORT S ON S.ID_SPORT = PL.ID_SPORT
GROUP BY PL.ID_SPORT, S.NAME, A.NAME

它显示了所有的比赛记录,但我只想要best_result 的最大值,按运动分组,拥有结果的运动员姓名。有人可以告诉我我的查询有什么问题吗?

编辑:我还想显示拥有 best_result 的运动员。 这是表格

PLAYS {ID_ATHLETE, ID_SPORT, BEST_RESULT}
SPORT {ID_SPORT, NAME}
ATHLETE {ID_ATHLETE, NAME}

【问题讨论】:

  • 你能发布一些示例数据吗?
  • 我编辑了我的帖子。希望它更清楚。谢谢你帮助我:)

标签: sql oracle11g group-by


【解决方案1】:

您只需要在其中有一个 Inner Join 语句。

Select Max(PL.BEST_RESULT), S.NAME
FROM PLAYS PL
INNER JOIN SPORT S
    ON S.ID_SPORT = PL.ID_SPORT
GROUP BY S.NAME
       ,PL.ID_SPORT

您试图通过查询获取所有内容。

【讨论】:

    【解决方案2】:

    您的查询返回运动和运动员的每个独特组合。您需要从 GROUP BY 和 SELECT 中删除 A.NAME,然后您将拥有不同的 Sports。

    SELECT MAX(PL.BEST_RESULT), S.NAME
    FROM PLAYS PL
        INNER JOIN SPORT S ON S.ID_SPORT = PL.ID_SPORT
    GROUP BY PL.ID_SPORT, S.NAME
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多