我正在研究一个体育数据库,我想编写一个查询来返回某些类别的名称和统计值。例如,目标领先者、助攻领先者、得分领先者、+/- 领先者、罚时领先者等。我正在使用一个名为 NJDSkaters 的表格,其中包含来自特定球队的球员姓名和统计数据。下面是查询代码:
SELECT CONCAT(PlayerName,' - ',Goals) AS GoalLeader, CONCAT(PlayerName,' - ',Assists)
CONCAT(PlayerName,' - ',Points) AS PointsLeader
FROM NJDSkaters
WHERE Goals = (SELECT DISTINCT MAX(Goals) FROM NJDSkaters)
OR Assists = (SELECT DISTINCT MAX(Assists) FROM NJDSkaters)
OR Points = (SELECT DISTINCT MAX(Points) FROM NJDSkaters);
这是我的滑冰者注册表中的一个片段,它将显示此查询应返回的球员:
如您所见,我想要的返回查询应该返回“Ilya Kovalchuk - 37”作为 GoalLeader,“Patrik Elias - 52”作为 AssistLeader,“Ilya Kovalchuk - 83”作为 PointsLeader。运行查询确实提供了这些结果,但包含我不想要的额外信息,如您在此处看到的:
我的问题是,我如何摆脱多余的信息?我只想要每个类别的领导者,我不想看到排名第二的球员,即使该球员在其他类别中排名第一。本质上,我要说的是,我只想要这张表中的 1 行。以前,我的代码会返回所有玩家,其中领导者位于顶部,所以这段代码离我想要的结果更近了一步,但现在我被卡住了。寻找这个问题的答案一直具有挑战性,因为通常很难找到提出问题的方法。