在Access 2016查询中按组求和

问题描述

我有一个查询,返回以下数据:

enter image description here

我正在尝试对其进行调整,以求汇总每个场地的跑步总数。我提出了以下查询,但是有两个问题:

  1. 它不是按地点求和,而是所有运行的求和;

  2. 运行时间很长。

有人可以看到我在做什么吗?

谢谢

SELECT scorecardBatting.matchId,scorecardBatting.battingTeam,scorecardBatting.inningsNo,scorecardBatting.batsmanId,scorecardBatting.howdismissed,scorecardBatting.runs,scorecardBatting.ballsFaced,Matches.venue,(SELECT SUM(runs) FROM scorecardBatting WHERE Matches.venue=Matches.venue) AS TOTAL
FROM Matches INNER JOIN scorecardBatting ON Matches.matchId = scorecardBatting.matchId
GROUP BY scorecardBatting.matchId,Matches.venue;

解决方法

如果您想要每个场所的跑步总数,那么一个简单的聚合查询就可以满足您的要求:

SELECT Matches.venue,SUM(runs) AS TOTAL
FROM Matches INNER JOIN
     ScorecardBatting
     ON Matches.matchId = ScorecardBatting.matchId
GROUP BY Matches.venue;

如果您希望在原始查询中使用此功能,可以将其加入:

select . . .,t.total
from Matches inner join
     ScorecardBatting
     on Matches.matchId = ScorecardBatting.matchId join
     (select Matches.venue,sum(runs) AS TOTAL
      from Matches INNER JOIN
           ScorecardBatting
           on Matches.matchId = ScorecardBatting.matchId
      group by Matches.venue
     ) t
     on t.venue = matches.venue;

我认为您的查询不需要group by