TOP

SQL GROUP BY

SQL GROUP BY 説明

GROUP BY ステートメントは、「各国の顧客数を調べる」など、同じ値を持つ行を集計行にグループ化します。

GROUP BY ステートメントは、結果セットを 1 つ以上の列でグループ化するために、集計関数 (COUNT()、MAX()、MIN()、SUM()、AVG()) とともによく使用されます。


GROUP BY 構文

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s)

デモデータベース

以下は、「Northwind」データベースの「Customers」(「Customers」) テーブルのサンプルです。

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL GROUP BY の例

次の SQL ステートメントは、各国の顧客数をリストします。

Run SQLSELECT COUNT(CustomerID), Country 
FROM Customers 
GROUP BY Country

次の SQL ステートメントは、各国の顧客を最高位から最低位まで並べてリストします。

Run SQLSELECT COUNT(CustomerID), Country 
FROM Customers 
GROUP BY Country 
ORDER BY COUNT(CustomerID) DESC

デモデータベース

以下は、「Northwind」データベースの「Orders」(「Orders」) テーブルのサンプルです。

ProductIDOrderIDCustomerIDEmployeeIDOrderDateShipperID
1102489051996-07-043
2102498161996-07-051
3102503441996-07-082
4102518431996-07-081
5102527641996-07-092

テーブル "Shippers" ("Senders") のサンプル:

ShipperIDShipperNamePhone
1Speedy Express(503) 555-9831
2United Package(503) 555-3199
3Federal Shipping(503) 555-9931

GROUP BY と JOIN の組み合わせの例

次の SQL ステートメントは、各送信者によって送信された注文の数をリストします。

Run SQLSELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders 
FROM Orders 
LEFT JOIN Shippers 
ON Orders.ShipperID = Shippers.ShipperID 
GROUP BY ShipperName