1. 程式人生 > 資料庫 >簡單講解sql語句中的group by的使用方法

簡單講解sql語句中的group by的使用方法

1.概述

group by 就是依據by 後面的規則對資料分組,所謂的分組就是講資料集劃分成若干個'小組',針對若干個小組做處理。

2.語法規則

SELECT column_name,aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

3.舉例說明

我們有這樣一個訂單表:

我們希望統計每一個使用者訂單的總金額,我們可以藉助 group by 來實現:

select Customer,sum(OrderPrice) as total_price group by Customer;

出現下面的結果集:
Bush 2000
Carter 1700
Adams 2000
實際上是先講資料按照Customer分組,然後統計每一組orderPrice的總和,最後以一組作為一行展現出來。
如果去掉group by 語句就會出現下面的結果:

它是講所有的price相加得到最後的總和,與我們的預期是不一樣的。

4.注意點

如果出現下面的寫法:

select 類別,sum(數量) as 數量之和,摘要from Agroup by 類別order by 類別 desc

會報錯,因為select 的欄位要麼包含在group by 後面作為分組的依據,要麼包含在聚合函式中,否則摘要的那一列無法匹配到一行。

因此可以採用如下的寫法:

select 類別,sum(數量) AS 數量之和from Agroup by 類別order by sum(數量) desc

如果想使用多列分組,可以採用group by all語法:

select Customer,OrderDate,sum(OrderPrice) group by all Customer,OrderDate

5.where 和having的區別

where 是在查詢分組前,講不符合where 條件的行去掉,即在分組錢過濾資料,where 條件中不能包含聚合函式
having 是篩選滿足條件的組,即在分組之後過濾資料,having語句中常常包含聚合函式,用having過濾出特定的組。

舉例:

select Customer,sum(OrderPrice) as total_price group by Customer having total_price>1700;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。