平均前按SQL分组
目前,我有一个查询,根据对手的不同,查找得分的平均值 以下是查询:平均前按SQL分组,sql,ms-access,average,Sql,Ms Access,Average,目前,我有一个查询,根据对手的不同,查找得分的平均值 以下是查询: 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.Posi
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
这可能吗?您可以使用子查询执行此操作,先在子查询中聚合,然后再在外部查询中聚合:
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;
这非常接近。唯一的问题是我需要将子查询中的平均值更改为SUM。不过,这让我走对了方向,谢谢@充满了问题。如果使用
sum()
,则问题中的示例为(40+23)/2=31。我选择了avg()
,因为它似乎更接近OP值。