2013-03-14 123 views
0

的目標是「顯示的隊名和總進球數得分。」說明COUNT和GROUP BY

答案是:

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

我不明白爲什麼我們按eteam.teamname而不是goal.teamid分組。難道我們不應該按goal.teaid進行分組,而是將下面的兩個'RUS'條目合併爲一個?

兩個databses或你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 
+1

我不確定這是一個公共問題,或者這應該是您本地系統中的一張票。 – 2013-03-14 16:49:09

+0

如果teamname在表eteam(希望是)中是唯一的,那麼查詢將按原樣正常工作。 – Tom 2013-03-14 16:53:40

回答

1

在本例中,您可以在GROUP BY子句中使用id,teamidteamname並獲得相同的結果。

難道我們不應該按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 

由於加入條款,eteam.id是一樣的goal.teamid。由於eteam.teamname是不同的(沒有兩個團隊具有相同的名稱)並且對應於eteam.id,所以通過這些字段中的任何一個進行分組都會得到相同的結果。

+0

我沒有嘗試通過teamid分組,它不起作用。你能解釋一下你的推理嗎?你爲什麼認爲這種情況? – user1103294 2013-03-14 17:05:43

+0

我嘗試了SQLzoo.net和查詢工程...偉大的傾斜網站,很高興瞭解它。 – 2013-03-14 17:21:32

+0

我意識到我使用'SQL Server'作爲引擎時,通過teamid分組不起作用。 當我通過teamid或teamname工作使用'MySQL'分組時。 你能否測試這是否也適用於你? – user1103294 2013-03-14 17:25:59

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) 是第一個將計算的記錄數,因爲每個記錄將有teamname, 和count(goal.teamid)之間的差異將不包含NULL,所以它只會加上目標。

+0

我對你的回答有點困惑。你說count(goal.teamid)加起來的目標。但我們的目標是總結首先得分的目標。 – user1103294 2013-03-14 17:04:49

+0

你是對的!他的觀點是:要注意你的計數,因爲根據數據的不同,你可能會根據表的連接方式來計算空行。你會看到更多高級主題,如內部,外部,右側,左側連接。 – 2013-03-14 17:25:36

+0

@ user1103294正好。 count(goal.teamid)加上了目標,這是目標。這就是count(goal.teamid)用於答案的原因,而不是COUNT(eteam.teamname),以及爲什麼它不匹配組。 – 2013-03-14 17:52:02