2016-12-17 72 views
1

我有一个MySQL表中的幻想足球联盟的数据。我想查询一个php页面的数据。幻想足球:将球队平均得分与联盟平均水平进行比较?

如何创建一个查询来计算团队的得分与该年度得分的联盟平均得分相比较?

我(简化)数据表看起来像这样:

游戏桌:

year | team | Week | Points 
2016 | Wildcats | 1 | 44 
2016 | Wildcats | 2 | 52 
2015 | Hawks | 1 | 36 
2015 | Hawks | 2 | 58 
2016 | Hawks | 1 | 43 

我怎么会发现在2016年(48.0)野猫的平均之间的差异,所有球队的平均在2016年(46.3)?

我可以使用这个查询来计算这两个数字,但不知道如何做减法。

SELECT g1.year, g1.team, AVG(g1.points) as ppg, 
    (SELECT AVG(points) 
    FROM game AS g2 
    WHERE g2.year=g1.year) AS seasAvg 
FROM game AS g1 
GROUP BY g1.team, g1.year 
ORDER BY ppg 
+0

它看起来好像你可以弄清楚这一点,虽然;你看起来如此密切。 – Strawberry

+0

是@Strawberry很高兴看到已经采取真正努力的问题以及样本数据。这些标签稀有 – e4c5

回答

1

裹在外层查询整个事情,那么你就可以计算出的差异,同时保持简短而亲切。

SELECT a.*, ppg - seasAvg AS diff FROM (
    SELECT g1.year, g1.team, AVG(g1.points) as ppg, 
     (SELECT AVG(points) 
     FROM game AS g2 
     WHERE g2.year=g1.year) AS seasAvg 
    FROM game AS g1 
    GROUP BY g1.team, g1.year 
    ORDER BY ppg 
) AS a