在這回中,將要探討SQL server中的Group By用法,並搭配聚合函數使用。
資料在資料表中都是一列一列的,而分組則是把這些列的某些特徵欄位視為分組依據,並且將他們合為一組,並使用聚合函數就能夠做出簡易的統計。
測試資料
還是一樣,先放上資料表:
customers 顧客
products 產品
orders 出貨單
order_details 出貨單明細
GROUP BY
把相同值列分組成匯總列。
Group By常常與COUNT(), MAX(), MIN(), SUM(), AVG()這些總計有關的語法一起用。
聚合函數
COUNT(column_name):取得欄位資料筆數。(ps.如果想統計整列不管有沒有空值問題可以下 COUNT(*) )
MAX(column_name):取得欄位最大值。
MIN(column_name):取得欄位最小值。
SUM(column_name):取得欄位加總。
AVG(column_name):取得欄位平均值。
語法:
1 | SELECT column_name(s) |
實作:統計訂單明細的資料內容。
1 | Select order_number,sum(price*amount) as 訂單總額 |
結果:
以order_number訂單編號為分組要件,把order_details表中所有重複的order_number都獨立識別成一個群組。
再以這個群組去統計資料。
如下圖,因為資料庫中order_details只有2筆資料,所以把這2筆的order_number嘗試分組,發現都只有A002這個訂單編號,於是就只分成了一組A002的資料,而這組A002資料底下則有2筆資料,可供統計聚合函數COUNT(), MAX(), MIN(), SUM(), AVG()使用。
參考資料
https://www.w3schools.com/sql/sql_groupby.asp
https://ithelp.ithome.com.tw/articles/10218537
https://ithelp.ithome.com.tw/articles/10218055