嵌套Sabermetric SQL-平均板外观和游戏

嵌套Sabermetric SQL-平均板外观和游戏,sql,Sql,我试图找到2012赛季美国职业棒球大联盟外野手的平均比赛和平均出场次数,这些外野手是按出生年份排序的。目前,此SQL显示每个播放器的条目。该数据库是lahman数据库 我得到一个错误: MySQL Error 1248: Every derived table must have its own alias 有人看到问题了吗。这是最明确的方式,我嵌套的选择,但我不知道在哪里 SELECT AVG(PA) AS AVG_PA, AVG(b.G) AS AVG_G FROM

我试图找到2012赛季美国职业棒球大联盟外野手的平均比赛和平均出场次数,这些外野手是按出生年份排序的。目前,此SQL显示每个播放器的条目。该数据库是lahman数据库

我得到一个错误:

MySQL Error 1248: Every derived table must have its own alias
有人看到问题了吗。这是最明确的方式,我嵌套的选择,但我不知道在哪里

   SELECT AVG(PA) AS AVG_PA, AVG(b.G) AS AVG_G
        FROM(
        SELECT CONCAT(m.nameFirst, ' ', m.nameLast) AS playerName, m.birthYear, f.pos, b.yearID, b.teamID, b.stint,
          b.G,
          (b.AB+b.BB+b.HBP+b.SF+b.SH) AS PA
        FROM Batting b
        JOIN Master m
          ON b.playerID = m.playerID
        JOIN Fielding f
         ON f.playerID = b.playerID
          AND f.yearID = b.yearID
          AND f.stint = b.stint
        WHERE  (f.POS = 'LF'AND b.yearID = '2013') 
            OR (f.POS = 'CF' AND b.yearID = '2013')
            OR (f.POS = 'RF' AND b.yearID = '2013')
    )
    ORDER BY m.birthYear
谢谢

您的子查询需要别名

在外部选择中,您需要使用指定给子查询的表别名访问列

SELECT AVG(T.PA) AS AVG_PA, AVG(T.G) AS AVG_G
        FROM(
        SELECT CONCAT(m.nameFirst, ' ', m.nameLast) AS playerName, m.birthYear, f.pos, b.yearID, b.teamID, b.stint,
          b.G,
          (b.AB+b.BB+b.HBP+b.SF+b.SH) AS PA
        FROM Batting b
        JOIN Master m
          ON b.playerID = m.playerID
        JOIN Fielding f
         ON f.playerID = b.playerID
          AND f.yearID = b.yearID
          AND f.stint = b.stint
        WHERE  (f.POS = 'LF'AND b.yearID = '2013') 
            OR (f.POS = 'CF' AND b.yearID = '2013')
            OR (f.POS = 'RF' AND b.yearID = '2013')
    ) T
    ORDER BY T.birthYear

答案解决了你的问题吗?嘿@RADAR,你的解决方案找到了平均值。然而,我的逻辑是错误的。我想找到每个外野手的击球统计数据。然而,许多外野手使用不同的外场位置RF、CF和LF。因此,问题在于,由于我将击球表命名为别名,并按外场位置搜索,因此每个球员都会重复几行,这会弄乱平均值。我需要弄清楚如何获得不同的案例,这样一旦发现球员在外场比赛,就不会重复球员id或姓名。@顺便说一句,谢谢你的帮助。