2011-09-15 11 views
29

属性がa1a2、...などの表Tab1があるとします。属性は一意ではありません。GROUP BYはどのように機能しますか?

次のクエリの性質は何ですか?常に1つの行を返しますか?

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

a1とa2の固有の組み合わせ(またはグループ)ごとに1つの行が返されます。ユニークな組み合わせが1つしかない場合は、1行しか取得できません。 –

+2

そして合計は各グループでどれだけの行が終了したかを示します=) – jadarnel27

答えて

51

GROUP BYは、GROUP BYフィールドのユニークな組み合わせごとに1つのローを返します。したがって、あなたの例では、Tab1の行で発生する(a1, a2)のすべての明確な組み合わせは、フィールド値ごとのグループの指定された組み合わせを持つ行のグループを表すクエリの行になります。 SUM()のような集計関数は、各グループのメンバ上で計算されます。

13

GROUP BYGROUP BY句内のフィールドの一意の組合せごとに一行を返します。 1行だけを確実にするには、、SUMMAX - 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の合計数を表示します。

関連する問題