目的是“显示球队名称和进球总数。”

答案是:

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子句中使用teamidteamnameGROUP 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/

10-11 05:01