【发布时间】:2012-10-15 21:12:46
【问题描述】:
这是使用 MYSQL
我的问题如下。我有一个棒球数据库,在那个棒球数据库中有一个主表,其中列出了每个曾经打过球的球员。还有一个击球台,可以跟踪每个球员的击球数据。我创建了一个将这两者结合在一起的视图;因此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 年的 48 HR,但每个人都知道 Barry Bonds 在 2001 年达到了 73 HR。谁能给我一些建议?
【问题讨论】:
-
您需要按“十年”而不是年份分组。这可能是数据问题 - 或者您需要先对日期进行更多数学运算
-
这是什么类型的 SQL?对于不同的供应商和实现,可用的功能是不同的......
-
离题,但“每个人都知道巴里·邦兹在 2001 年达到 73 小时”对我来说似乎相当乐观(尤其是考虑到这里的观众)
-
正式注明。 :) 下次发帖之前我会考虑的。
-
那个视图的名字几乎无意中很搞笑。