SQL GROUP BYステートメント
SQL GROUP BYステートメント
GROUP BYステートメントは、「各国の顧客数を見つける」のように、同じ値を持つ行を集計行にグループ化します。
GROUP BYステートメントは、集約関数 (COUNT()、MAX()、MIN()、SUM()、AVG()) を使用して、結果セットを1つ以上の列でグループ化します。
GROUP BY構文
SELECT <em>column_name(s)</em>
FROM <em>table_name</em>
WHERE <em>condition</em>
GROUP BY <em>column_name(s)
</em>ORDER BY <em>column_name(s);</em>
デモデータベース
以下は、Northwindサンプルデータベースの"Customers"テーブルからの選択です。
|
顧客ID |
顧客名 |
連絡先 |
住所 |
街 |
郵便番号 |
国 |
|---|---|---|---|---|---|---|
| 1 |
アルフレッド・フードボックス | マリア・アンダース | オベレ通り57 | ベルリン | 12209 | ドイツ |
| 2 | アナ・トルヒーヨ サンドイッチとアイスクリーム | アナ・トルヒーヨ | コンスティトゥシオン通り2222番地 | メキシコDF | 05021 | メキシコ |
| 3 | アントニオ・モレノ・タケリア | アンソニー・モレノ | マタデロス 2312 | メキシコDF | 05023 | メキシコ |
| 4 |
アラウンド・ザ・ホーン | トーマス・ハーディ | 120 ハノーバー スクエア | ロンドン | WA1 1DP | イギリス |
| 5 | バーグルンドのスーパーマーケット | クリスティーナ・ベルグルンド | ベルグフスヴァーゲン 8 | ルレオ | S-958 22 | スウェーデン |
SQL GROUP BYの例
次のSQLステートメントは、各国の顧客数を一覧表示します。
次のSQLステートメントは、各国の顧客数を上位から下位に並べ替えて一覧表示します。
例
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;
デモデータベース
以下は、Northwindサンプルデータベースの"Orders"テーブルからの選択です。
|
オーダーID |
顧客ID |
従業員ID |
注文日 |
荷送人ID |
|---|---|---|---|---|
| 10248 | 90 | 5 | 1996-07-04 | 3 |
| 10249 | 81 | 6 | 1996-07-05 | 1 |
| 10250 | 34 | 4 | 1996-07-08 | 2 |
そして、「Customers」テーブルからの選択
|
荷送人ID |
荷送人名 |
|---|---|
| 1 | スピーディエクスプレス |
| 2 | ユナイテッドパッケージ |
| 3 | 連邦海運 |
JOINを使用したGROUP BYの例
次のSQLステートメントは、各配送業者から送信された注文の数を一覧表示します。
例
SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;