
集約データの取得
集合関数によるグループ化されたデータの取得
テーブル全体についての情報を取得することに加えて、集合関数をローのグ ループに対して使うこともできます。
ローのグループに対する 各営業担当者が受け持つ注文数をリストするには、次のコマンドを入力します。
集合関数の使用
SELECT sales_rep, count( * )
FROM sales_order
GROUP BY sales_rep
sales_rep | count(*) |
129 | 57 |
195 | 50 |
299 | 114 |
467 | 56 |
667 | 54 |
|
|
このクエリの結果は、各営業担当者の ID 番号別に、営業担当者の ID が格納さ れたローと、sales_order テーブル内でその ID 番号を持つローの数で構成され ます。
GROUP BY 句を使用すると、結果のテーブルには、GROUP BY で指定したカ ラムで見つかった値別のローが表示されます。
グループの制限
WHERE 句を使用して、クエリでローを制限する方法についてはすでに説明し ました。GROUP BY 句の制限には、HAVING キーワードを使用します。
GROUP BY 句の制限 注文数が 55 を超えるすべての営業担当者をリストするには、次のコマンドを 入力します。
SELECT sales_rep, count( * )
FROM sales_order
GROUP BY sales_rep
HAVING count( * ) > 55
sales_rep | count(*) |
129 | 57 |
299 | 114 |
467 | 56 |
1142 | 57 |
|
|
注意 GROUP BY は常にHAVING の前に指定します。同様に、WHERE はGROUP
BY の前に指定します。
12 | Sybase IQ |