每天學點SQL(006) 聚合函式

影片載入中。。。

本影片約120秒。碎片時間,關注收藏。

聚合函式

SQL 聚合函式計算一組值,並返回單個值。

聚合函式語法

SELECT 列名1,聚合函式(列名2)FROM 表名GROUP BY 列名1

因為聚合函式對一組值進行操作,所以它通常與 GROUP BY 子句一起使用。GROUP BY 子句將結果集劃分為值分組,聚合函式為每個分組返回單個值。

常見的聚合函式:AVG()

COUNT()

MAX()

MIN()

SUM()

除 COUNT() 函式之外,SQL 聚合函式忽略 NULL 值。

聚合函式介紹

每天學點SQL(006) 聚合函式

聚合函式AVG詳解

AVG 函式是一個聚合函式,用於計算集合的平均值。 以下說明了AVG 函式的語法:

AVG([ALL|DISTINCT] expression)

如果使用 ALL 關鍵字,AVG 函式將獲取計算中的所有值。

預設情況下,無論是否指定,AVG 函式都使用 ALL。如果明確指定 DISTINCT 關鍵字,AVG函式將僅在計算中採用唯一值。

例如,有一組資料集 (1,2,3,3,4) 並將 AVG(ALL) 應用於此集合,AVG 函式將執行以下計算:(1+2+3+3+4)/5 = 2。6

但是,如果指定:AVG(DISTINCT) 將按如下方式處理:(1+2+3+4)/4 = 2。5

聚合函式SUM詳解

SUM 函式是一個聚合函式,它返回所有或不同值的總和。需要注意的是,只能將 SUM 函式應用於數字列。以下說明了 SUM 函式的語法。

SUM([ALL|DISTINCT] expression)

ALL 運算子用於將聚合應用於所有值。 SUM 函式預設使用 ALL 運算子。

例如,如果有一組集合值:(1,2,3,3,NULL)。 使用 SUM 函式將返回 9,請注意,SUM函式忽略NULL 值。要計算唯一值的總和,可以使用 DISTINCT 運算子,例如,集合 (1,2,3,3,NULL) 的SUM(DISTINCT) 為 6。

聚合函式COUNT詳解

COUNT 函式是一個聚合函式,它返回符合條件行數。以下是 COUNT 函式的語法:

COUNT ([ALL | DISTINCT] expression)

COUNT 函式的結果取決於傳遞給它的引數。預設情況下,COUNT 函式使用 ALL 關鍵字,無論是否指定它。 ALL 關鍵字表示考慮組中的所有專案,包括重複值。

例如,如果有一個數據集合 (1,2,3,3,4,4) 並應用 COUNT 函式,則結果為 6。

如果明確指定 DISTINCT 關鍵字,則僅考慮唯一的非 NULL 值。 如果將 COUNT 函式應用於資料集 (1,2,3,3,4,4),則 COUNT 函式返回 4。

另一種形式的 COUNT 函式接受星號 (*) 作為引數如下:COUNT(*)

每天學點SQL(006) 聚合函式

拍攝於20200408

聚合函式MAX/MIN詳解

MAX() 函式,用於在一組值中查詢最大值。 MAX 函式的語法:MAX(expression)。

MAX 函式忽略 NULL 值。與SUM

COUNT和AVG函式不同,DISTINCT 選項不適用於 MAX 函式。

MIN() 函式同理。

聚合函式使用示例

假設表名

students

包含以下幾個欄位:

每天學點SQL(006) 聚合函式

其中,各欄位定義為:sid為學生ID、name為姓名、gender為性別,age為年齡,province為所在省份,city為所在城市,district為所在區 (NULL表示未上報)。

聚合函式使用:函式AVG()

SELECT AVG(age) AS avg_age FROM students

該語句計算學生的平均年齡。

每天學點SQL(006) 聚合函式

SELECT name, age FROM studentsWHERE age > (SELECT AVG(age) FROM students )

該語句查詢年齡高於學生平均年齡的基本資訊。

每天學點SQL(006) 聚合函式

聚合函式使用:函式MAX() / MIN()

SELECT MAX(age) AS max_age FROM students

該語句計算學生的最大年齡。

每天學點SQL(006) 聚合函式

SELECT MIN(age) AS min_age FROM students

該語句計算學生的最小年齡。

每天學點SQL(006) 聚合函式

聚合函式使用:函式COUNT() / SUM()

SELECT COUNT(sid) AS s_cnt FROM students

統計學生人數。

每天學點SQL(006) 聚合函式

SELECT SUM(age) AS age_total FROM students

SUM(age) 對學生年齡欄位求和。

每天學點SQL(006) 聚合函式

碎片時間,關注收藏。

每天學點SQL(006) 聚合函式

拍攝於20200408

往期影片:

每天學點SQL(001) SELECT語句

每天學點SQL(002) DISTINCT語句

每天學點SQL(003) WHERE子句

每天學點SQL(004) AND 或 OR

每天學點SQL(005) ORDER BY語句