目前我有一个查询,可以根据对手找到得分的平均值。
以下是查询:
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;
如果我有这样的事情就会出现问题:
NBAGameLog表:
Player_ID Team Opp Points Position
1 MIA ATL 15 C
2 MIA ATL 25 C
3 BOS ATL 23 C
这样做的结果是:
Position Opp Average
C ATL 21
但是我想首先将查询组合在一起。因此,除了(15 + 25 + 23)/ 3之外,它会看到前两个球员在同一支球队,所以只计算一个并且做(40 + 23)/ 2
这可能吗?
答案 0 :(得分:3)
您可以使用子查询执行此操作,首先在子查询中聚合,然后在外部查询中再次聚合:
SELECT t.Opp, avg(Points)
FROM (SELECT gl.team, gl.Opp, AVG(gl.Points) as Points
FROM Players p INNER JOIN
NBAGameLog gl
ON p.Player_ID = gl.Player_ID
WHERE (gl.Date_Played Between Date()-15 And Date() AND
p.Position = "C"
GROUP BY gl.team, gl.Opp;
) t
GROUP BY t.Opp;