因此我搜索并发现了很多类似于我的问题,例如 MYSQL - get a row for each year, with total sum for each month但我正在寻找不同的方式。我使用拉曼数据库,每年都会通过WAR查找前十名玩家。然后,我将这些球员的年龄平均分配给该赛季的平均年龄。我试图每年都这样做,但我坚持如何做到这一点。获取显示每年发现的平均值的行列表MYSQL
SELECT AVG(t.age) As AverageAge, w.yearID
FROM (SELECT w.playerID, w.age
From war_batting w, Master m
WHERE w.playerID = m.playerID AND w.yearID = 2012
ORDER by w.WAR desc
LIMIT 10) t,
war_batting w;
这显示了该赛季前10名球员的平均水平,所以我期待着在每个赛季都这样做。在我链接到的帖子中,我看到他们会为他们需要的每个价值做到这一点,但我正在寻找一种不涉及重复相同代码近150年的方式。我已经在Java和C++中编程,所以很自然地,我正在寻找一种方法来循环使用我所拥有的功能,并且在当前年份之前不断添加1到年份ID。我很难理解如何做到这一点。上面的代码还将2004年的yearID返回为2004年,而不是2012年,但我更有信心解决这个问题,因为我很确定自己在其他测试中有这种能力。此外,如果代码块不能很好地发布时,我会尝试修复它,因为这是我的第一篇文章。
主人是从一个不同的代码遗留下来的,但是我不需要那个。至于你的样本,它经历了几年,但每年的平均年龄值都是不正确的。我不知道为什么,但我会看看我是否可以使用它来获得我需要的东西。 – ATV360
我真的不知道为什么,但是当我在测试中的where语句中删除w.playerID = m.playerID时,发现这些值只有一年,它只返回1号玩家的年龄。在这个显示前十名球员的情况下,它也将只显示他10次。 – ATV360
我只是试着将这个语句和主表添加回你的程序,现在它完美地工作。我仍然不完全确定它为什么这样工作,但非常感谢你的帮助! – ATV360