SQL GROUP BY

SQL GROUP BY

GROUP BY 語句用於結合合計函式,根據一個或多個列對結果集進行分組,如合計函式 (比如 SUM) 常常需要添加 GROUP BY 語句用於分組。

基本介紹

  • 中文名:分組查詢
  • 外文名:SQL GROUP BY
  • 性質:科技
  • 類別:計算機學
  • 屬於:編程
正文,介紹,實例,列表,

正文

介紹

合計函式 (比如 SUM) 常常需要添加 GROUP BY 語句。
GROUP BY 語句
GROUP BY 語句用於結合合計函式,根據一個或多個列對結果集進行分組。
SQL GROUP BY 語法
SELECT column_name, aggregate_function(column_name)FROM table_name WHERE column_name operator valueGROUP BY column_name

實例

我們擁有下面這個 "Orders" 表:
O_Id
OrderDate
OrderPrice
Customer
1
2008/12/29
1000
Bush
2
2008/11/23
1600
Carter
3
2008/10/05
700
Bush
4
2008/09/28
300
Bush
5
2008/08/06
2000
Adams
6
2008/07/21
100
Carter
現在,我們希望查找每個客戶的總金額(總訂單)。
我們想要使用 GROUP BY 語句對客戶進行組合。
我們使用下列 SQL 語句:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer結果集類似這樣:
Customer
SUM(OrderPrice)
Bush
2000
Carter
1700
Adams
2000
SELECT Customer,SUM(OrderPrice) FROM Orders
(該語句無法正常運行,原因是Customer沒有使用聚合函式,所以必須被包含在GROUP BY 語句中,該語句僅供示例使用,實際上無法運行)。所有被select的項(除sum的項之外),都必須出現在group by 中。
結果集類似這樣:
Customer
SUM(OrderPrice)
Bush
5700
Carter
5700
Bush
5700
Bush
5700
Adams
5700
Carter
5700
上面的結果集不是我們需要的。
那么為什麼不能使用上面這條 SELECT 語句呢?解釋如下:上面的 SELECT 語句指定了兩列(Customer 和 SUM(OrderPrice))。"SUM(OrderPrice)" 返回一個單獨的值("OrderPrice" 列的總計),而 "Customer" 返回 6 個值(每個值對應 "Orders" 表中的每一行)。因此,我們得不到正確的結果。不過,您已經看到了,GROUP BY 語句解決了這個問題。

列表

我們也可以對一個以上的列套用 GROUP BY 語句,就像這樣:
SELECT Customer,OrderDate,SUM(OrderPrice) FROM OrdersGROUP BY Customer,OrderDate
特別注意
group by 有一個原則,就是 select 後面的所有列中,沒有使用聚合函式的列,必須出現在 group by 後面。

相關詞條

熱門詞條

聯絡我們