我正在尝试学习 MYSQL,以便我可以进行自己的棒球研究。到目前为止,我已经取得了成功,但事实证明,看似简单的查询很困难,而且我似乎找不到解决方案。
我正在尝试编写一个查询,该查询可以统计出每年 HR 命中率最高的人员。我的代码是:
SELECT
playerID, teamID,
yearID AS Year,
MAX(HR) AS MaxHR
FROM
Batting
GROUP BY
yearID, playerID, teamID
ORDER BY
yearID DESC, MAXHR DESC;
这很接近我想要的,但给了我按时间顺序排列的每个玩家,而不是仅仅排名第一,然后是下一年。我确信我错过了一些明显的东西。
感谢您的帮助
最佳答案
您应该使用子选择来获取yearID和HR
SELECT playerID,
teamID,
yearID AS Year,
HR AS MaxHR
FROM Batting
WHERE (yearID, HR) in (select yearID, max(hr)
from batting group by yearID)
ORDER BY yearID DESC, MAXHR DESC;
关于MYSQL 初学者 ORDER By - 只需要列中每个条目的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36140625/