2011-09-15 40 views
29

假設我有一個具有屬性的表Tab1 - a1,a2,...等。這些屬性都不是唯一的。GROUP BY如何工作?

以下查詢的性質是什麼?它會一直返回一行嗎?

SELECT a1, a2, sum(a3) FROM Tab1 GROUP BY a1, a2 
+4

它將返回一行每個唯一組合(或組)的a1和a2。如果只有一個唯一組合,則只能獲得一行。 –

+2

總和會告訴你每組中有多少行結束=) – jadarnel27

回答

51

GROUP BYGROUP BY字段的每個唯一組合返回一行。因此,在您的示例中,在Tab1行中發生的每個不同組合(a1, a2)都會導致查詢中的一行表示具有按字段值組合的給定行的行組。在每個組的成員上計算像SUM()這樣的聚合函數。

13

GROUP BY返回一行用於GROUP BY子句中的字段的每個唯一組合。爲確保只有一行,您將不得不使用聚合函數 - COUNT,SUM,MAX - 沒有GROUP BY子句。

3

GROUP BY將所有相同的記錄分組。

SELECT COUNT(ItemID), City 
FROM Orders 
GROUP BY City; 

---------------------------------------- 
13 Sacrmento 
23 Dallas 
87 Los Angeles 
5 Phoenix 

如果不按City它只會顯示ItemID總數。