0

ゴールは「チーム名と得点したゴールの総数を表示する」ことです。

答えは次のとおりです。

SELECT eteam.teamname, COUNT(goal.teamid)
FROM eteam JOIN goal ON id=teamid
GROUP BY eteam.teamname

なぜgoal.teamidではなくeteam.teamnameでグループ化しているのかわかりません。以下の2つの「RUS」エントリを1つに統合する代わりに、goal.teaidでグループ化するべきではありませんか?

2つのデータベースまたはあなたはここに問題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
4

2 に答える 2

1

各チームを一覧表示するには、eteam.teamnameでグループ化する必要があります。次に、カウントは各グループ内で機能します。

よく見かける

SELECT eteam.teamname, COUNT(eteam.teamname)
FROM eteam JOIN goal ON id=teamid
GROUP BY eteam.teamname

グループ内のレコード数をカウントします。COUNT(*)またはCOUNT(id)の場合もあります。ここで、idは主キーです。

COUNT(eteam.teamname)とCOUNT(goal.teamid)の違いは、各レコードにはチーム名があるため、最初のレコードはレコード数をカウントし、count(goal.teamid)にはNULLが含まれないため、追加するだけであるということです。目標を上げます。

于 2013-03-14T16:52:21.383 に答える
1

この例では、句でidteamidまたはを使用して同じ結果を得ることができます。teamnameGROUP BY

代わりに、goal.teamidでグループ化して、以下の2つの「RUS」エントリを1つに統合する必要がありますか?

次のクエリを見てみましょう。

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は別個であり(2つのチームが同じ名前を持つことはありません)、eteam.idに対応するため、これらのフィールドのいずれかでグループ化すると同じ結果が得られます。

于 2013-03-14T16:56:40.493 に答える