目的是“显示球队名称和进球总数。”
答案是:
SELECT eteam.teamname, COUNT(goal.teamid)
FROM eteam JOIN goal ON id=teamid
GROUP BY eteam.teamname
我不明白为什么我们要按eteam.teamname而不是Goal.teamid进行分组。我们不应该按Goal.teaid分组,而是将下面的两个“ RUS”条目合并为一个?
这两个数据库或您can go here problem 9:
eteam
id teamname coach
POL Poland Franciszek Smuda
RUS Russia Dick Advocaat
CZE Czech Republic Michal Bilek
GRE Greece Fernando Santos
goal
matchid teamid player gtime
1001 POL Robert Lewandowski 17
1001 GRE Dimitris Salpingidis 51
1002 RUS Alan Dzagoev 15
1001 RUS Roman Pavlyuchenko 82
最佳答案
在此示例中,可以在id
子句中使用teamid
,teamname
或GROUP BY
并获得相同的结果。
我们是否不应该按Goal.teamid分组,以将下面的两个“ RUS”条目合并为一个?
让我们看下面的查询:
SELECT eteam.teamname 'Team Name', COUNT(goal.teamid) 'Total Goals'
FROM eteam JOIN goal ON eteam.id=goal.teamid
GROUP BY goal.teamid
ORDER BY eteam.teamname
由于有join子句,因此eteam.id与Goal.teamid相同。由于eteam.teamname是不同的(没有两个团队具有相同的名称)并且与eteam.id相对应,因此按这些字段中的任何一个进行分组都会得到相同的结果。
关于mysql - 说明COUNT和GROUP BY,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15415266/