GROUP BYステートメント
GROUP BYステートメントは、1つ以上の列に応じて結果セットをグループ化し、集計関数と組み合わせて使用されます。
SQL GROUP BYシンタックス
SELECT COLUMN_NAME、aggregate_function(COLUMN_NAME) TABLE_NAME FROM WHERE COLUMN_NAMEオペレータ値 GROUP BY COLUMN_NAME
例BY SQLのGROUP
私たちは、以下の「受注」テーブルを持っています:
O_Id | 注文日 | OrderPrice | お客様 |
---|---|---|---|
1 | 2008年12月29日 | 1000年 | ブッシュ |
2 | 2008年11月23日 | 1600 | カーター |
3 | 2008年10月5日 | 700 | ブッシュ |
4 | 2008年9月28日 | 300 | ブッシュ |
5 | 2008/08/06 | 2000 | アダムス |
6 | 2008年7月21日 | 100 | カーター |
今、私たちは、顧客ごとの合計額(全順序を)見つけたいです。
私たちは、組み合わせ、顧客にGROUP BYステートメントを使用します。
我々は、次のSQL文を使用します。
注文FROM SELECT顧客、SUM(OrderPrice) カスタマーBY GROUP
結果セットは次のようになります。
お客様 | SUM(OrderPrice) |
---|---|
ブッシュ | 2000 |
カーター | 1700 |
アダムス | 2000 |
グレートバー、右?
あなたはGROUP BYが発生省略した場合はどうなるかを見てみましょう:
受注FROM SELECT顧客、SUM(OrderPrice)
結果セットは次のようになります。
お客様 | SUM(OrderPrice) |
---|---|
ブッシュ | 5700 |
カーター | 5700 |
ブッシュ | 5700 |
ブッシュ | 5700 |
アダムス | 5700 |
カーター | 5700 |
上記の結果セットは、我々が必要とするものではありません。
では、なぜその上、このSELECT文を使用していませんか?上記のSELECT文は、2つ(顧客とSUM(OrderPrice))を指定します。以下のように説明しました。「SUM(OrderPrice)」は、単一の値(「OrderPrice」欄の合計)を返し、「顧客」、戻り値6(表の各行にそれぞれ対応する「注文」)。したがって、我々は正しい結果を得ることができません。しかし、あなたが見てきた、GROUP BYステートメントは、この問題を解決します。
コラムBY複数のグループ
我々はまた、このように、陳述することにより、複数の列グループのために適用することができます。
注文FROM SELECT顧客、受注日、SUM(OrderPrice) お客様BY GROUP、受注日
原文链接ます。http:?//www.sysoft.net.cn/Article.aspx ID = 3737