mysql – SQL Query在几十年内返回最大值

这是使用MYSQL

我的问题如下.我有一个棒球数据库,在那个棒球数据库中有一个主表,列出了每个曾经玩过的球员.还有一个击球台,跟踪每个球员的击球统计数据.我创建了一个将这两者结合在一起的视图;因此masterplusbatting表.

  我现在想要找到自棒球开始以来每十年中人力资源最高的击球手.这是我试过的.

    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年.然后我按照十年进行分组,认为它会给我每十年最高的一次,但它并没有返回正确的值.例如,它在2004年给了我Adrian Beltre 48个人力资源,但是每个人都知道Barry Bonds在2001年达到了73人力资源.有人能给我一些指示吗?

最佳答案

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编辑

点赞