按SQL查询分组初学者

时间:2014-05-20 16:54:19

标签: sql oracle11g group-by

我对此查询有疑问:

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}

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你只需要有一个内部连接语句。

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

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