问题描述
我正在尝试对其进行调整,以求汇总每个场地的跑步总数。我提出了以下查询,但是有两个问题:
-
它不是按地点求和,而是所有运行的求和;
-
运行时间很长。
有人可以看到我在做什么吗?
谢谢
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
。