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

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


聚合函數

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

聚合函數語法

<code>SELECT 列名1,聚合函數(列名2)
FROM 表名
GROUP BY 列名1/<code>

因為聚合函數對一組值進行操作,所以它通常與 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 值。與SUMCOUNT和AVG函數不同,DISTINCT 選項不適用於 MAX 函數。

MIN() 函數同理。

聚合函數使用示例

假設表名students包含以下幾個字段:

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

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

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

<code>SELECT AVG(age) AS avg_age FROM students /<code>

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

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

<code>SELECT name, age FROM students
WHERE age > (SELECT AVG(age) FROM students )/<code>

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

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

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

<code>SELECT MAX(age) AS max_age FROM students /<code>

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

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

<code>SELECT MIN(age) AS min_age FROM students /<code>

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

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

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

<code>SELECT COUNT(sid) AS s_cnt FROM students /<code>

統計學生人數。

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

<code>SELECT SUM(age) AS age_total FROM students /<code>

SUM(age) 對學生年齡字段求和。

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

碎片時間,關注收藏。

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

拍攝於20200408

往期視頻:

每天學點SQL(001) SELECT語句

每天學點SQL(002) DISTINCT語句

每天學點SQL(003) WHERE子句

每天學點SQL(004) AND 或 OR

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


分享到:


相關文章: