SQL平均分组依据

时间:2014-02-26 13:42:08

标签: sql ms-access group-by average

我有两张桌子,玩家和GameLog。

玩家有位置和Player_ID

GameLog具有Player_ID,Opponent和Points Scored

我的目标是在过去15天内通过位置“C”返回每个对手得分的平均分数

以下是我正在使用的查询:

SELECT DISTINCTROW NBAGameLog.Opp, 
     (SELECT AVG(NBAGameLog.Points)
     FROM NBAGameLog INNER JOIN Players ON NBAGameLog.Player_ID = Players.Player_ID
     WHERE (((NBAGameLog.Date_Played) Between Date()-15 And Date())) AND Players.Position = "C") AS Expr1
FROM Players INNER JOIN NBAGameLog ON Players.Player_ID = NBAGameLog.Player_ID
GROUP BY NBAGameLog.Opp;

这将返回所有球队的列表和得分的总体平均得分,而不是由球队分开。例如,它返回:

ATL 19.12
BOS 19.12
NY  19.12

当应该再次显示ATL的平均分数时,对BOS的平均分数等等。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这是你的问题:

  

我的目标是在过去15天内通过位置“C”返回每个对手得分的平均分数

这不应该需要花哨的步法来回答。它似乎是一个基本的聚合查询。我想这就是你想要的:

SELECT NBAGameLog.Opp, AVG(NBAGameLog.Points)
FROM Players INNER JOIN
     NBAGameLog
     ON Players.Player_ID = NBAGameLog.Player_ID
WHERE (NBAGameLog.Date_Played Between Date()-15 And Date() AND
      Players.Position = "C"
GROUP BY NBAGameLog.Opp;