GROUP BY 語句用于結合 Aggregate 函數,根據一個或多個列對結果集進行分組。
SQL GROUP BY 語法
1
2
3
4
|
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name; |
演示數據庫
在本教程中,我們將使用眾所周知的 Northwind 樣本數據庫。
下面是選自 "Orders" 表的數據:
OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|
10248 | 90 | 5 | 1996-07-04 | 3 |
10249 | 81 | 6 | 1996-07-05 | 1 |
10250 | 34 | 4 | 1996-07-08 | 2 |
選自 "Shippers" 表的數據:
ShipperID | ShipperName | Phone |
---|---|---|
1 | Speedy Express | (503) 555-9831 |
2 | United Package | (503) 555-3199 |
3 | Federal Shipping | (503) 555-9931 |
選自 "Employees" 表的數據:
EmployeeID | LastName | FirstName | BirthDate | Photo | Notes |
---|---|---|---|---|---|
1 | Davolio | Nancy | 1968-12-08 | EmpID1.pic | Education includes a BA.... |
2 | Fuller | Andrew | 1952-02-19 | EmpID2.pic | Andrew received his BTS.... |
3 | Leverling | Janet | 1963-08-30 | EmpID3.pic | Janet has a BS degree.... |
SQL GROUP BY 實例
現在我們想要查找每個送貨員配送的訂單數目。
下面的 SQL 語句按送貨員進行訂單分類統計:
1
2
3
4
|
SELECT Shippers.ShipperName, COUNT (Orders.OrderID) AS NumberOfOrders FROM Orders LEFT JOIN Shippers ON Orders.ShipperID=Shippers.ShipperID GROUP BY ShipperName; |
GROUP BY 一個以上的列
我們也可以對一個以上的列應用 GROUP BY 語句,如下所示:
1
2
3
4
5
6
7
8
|
SELECT Shippers.ShipperName, Employees.LastName, COUNT (Orders.OrderID) AS NumberOfOrders FROM ((Orders INNER JOIN Shippers ON Orders.ShipperID=Shippers.ShipperID) INNER JOIN Employees ON Orders.EmployeeID=Employees.EmployeeID) GROUP BY ShipperName,LastName; |
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!