这是使用 MYSQL
我的问题如下。我有一个棒球数据库,在那个棒球数据库中有一个主表,其中列出了所有曾经参加过比赛的球员。还有一个击球表,跟踪每个玩家的击球统计数据。我创建了一个将这两者连接在一起的 View ;因此 masterplusbatting
表。
我现在想找出自棒球运动开始以来每十年中 HR 最高的击球手。这是我尝试过的。
select f.yearID, truncate(f.yearid/10,0) as decade,f.nameFirst, f.nameLast, f.HR
from (
select yearID, max(HR) as HOMERS
from masterplusbatting group by yearID
)as x inner join masterplusbatting as f on f.yearID = x.yearId and f.HR = x.HOMERS
group by decade
您可以看到我截断了 yearID 以获得 187、188、189
等而不是 1897、1885
。然后我按十年分组,认为它会给我每十年最高的值,但它没有返回正确的值。例如,它告诉我 Adrian Beltre 在 2004 年的 HR 为 48,但每个人都知道 Barry Bonds 在 2001 年达到 73 HR。谁能给我一些建议?
最佳答案
SELECT
Lookup.DecadeID,
Data.*
FROM
(
SELECT
truncate(yearid/10,0) as decadeID,
MAX(HR) as Homers
FROM
masterplusbatting
GROUP BY
truncate(yearid/10,0)
)
AS lookup
INNER JOIN
masterplusbatting AS data
ON data.yearid >= lookup.decadeID * 10
AND data.yearid < lookup.decadeID * 10 + 10
AND data.HR = lookup.homers
针对 MySQL 编辑
关于mysql - SQL 查询返回几十年来的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12904097/