我正在尝试学习MYSQL,因此我可以进行自己的棒球研究。到目前为止,我已经取得了成功,但看起来似乎是一个简单的查询很难,我似乎无法找到解决方案。
我试图编写一个查询,让我们每年都能获得最多人力资源。我的代码是:
SELECT
playerID, teamID,
yearID AS Year,
MAX(HR) AS MaxHR
FROM
Batting
GROUP BY
yearID, playerID, teamID
ORDER BY
yearID DESC, MAXHR DESC;
这接近我想要的,但按时间顺序按时间顺序给我每个玩家,而不仅仅是#1,然后是第二年。我确定我错过了一些明显的东西。
感谢您的帮助
答案 0 :(得分:1)
您应该使用子选择来获取年份ID和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;
答案 1 :(得分:1)
除了使用子查询之外,您还可以将表连接到自身以获得所需的结果。
SELECT a.playerID, a.teamID, a.yearID as YEAR, a.HR AS MAXHR
FROM Batting a LEFT JOIN Batting b
ON a.yearID = b.yearID and a.HR < b.HR
WHERE b.HR IS NULL;
这基本上只是将表连接到自身,其中年份相等,左手表中的行没有来自右手(连接表)的更高运行率。