mysql - SQL 查询返回几十年来的最大值

标签 mysql sql

这是使用 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/

相关文章:

sql - plpgsql 在返回查询之前对其进行操作

php - 随机抽取不更换

php - 无法通过数据库查询验证用户

php - 如何在 Eloquent Laravel 中获取查询的中间数?

php - 刷新数据库并删除条目

php - mysql group by 使用未格式化的日期和自动求和

由于特殊字符,Mysql 查询无法工作

sql - 如何避免 Rails as_json 创建大量数据库请求

Mysql查询结果日期时间明智

java - HQL - 查找属性 x 最高的实体