SQL 中的聚集函數?

SQL 中的聚集函數?

SQL 函數包含了算術函數,字符串函數,日期函數,轉換函數。還有一函數,叫做聚集函數。SQL 聚集函數是對一組數據進行彙總的函數,輸入是一組數據的集合,輸出是單個值。

有哪些聚集函數

SQL 中的聚集函數,有最大值,最小值,平均值。

image

Count 使用

例子:查詢heros 中hp_max 大於6000 的英雄。

SELECT	COUNT(*)	FROM	heros	WHERE	hp_max	>	6000

運⾏結果爲41。想要查詢最⼤⽣命值⼤於6000,且有次要定位的英雄數量,需要使⽤COUNT函數。

SELECT	COUNT(role_assist)	FROM	heros	WHERE	hp_max	>	6000

運⾏結果是23。需要說明的是,COUNT(role_assist)會忽略值爲NULL的數據⾏,⽽COUNT(*)只是統計數據⾏數,不管某個字段是否爲NULL。

對數據行中不同的取值進行聚集,過濾掉重複,可以寫成如下:

SELECT	COUNT(DISTINCT	hp_max)	FROM	heros

運⾏結果爲61。

MAX 使用

使用 Max 求hp_max最大值。

SELECT	MAX(hp_max)	FROM	heros	WHERE	role_main	=	'射⼿'	or	role_assist	=	'射⼿'

運⾏結果爲6014。

COUNT,AVG、MAX、MIN和SUM函數使用

SELECT	COUNT(*),	AVG(hp_max),	MAX(mp_max),	MIN(attack_max),	SUM(defense_max)	FROM	heros	role_main	=	'射⼿'	or	role_assist	=	'射⼿'。

運行結果:
image

AVG 、MAX、 MIN 會自動忽略值爲 NULL 的數據行

AVG

有時候需要對 AVG 保留有效數字, 比如保存兩位有效數字。

SELECT	ROUND(AVG(DISTINCT	hp_max),	2)	FROM	heros

運⾏結果爲6653.84。

數據分組統計

數據分組,一般要使用 Group By 語句。

	SELECT	COUNT(*),	role_main	FROM	heros	GROUP	BY	role_main

運行結果:
image

SELECT	COUNT(*),	role_assist	FROM	heros	GROUP	BY	role_assist

image

如果還需要按照需要對分組進行排序,可以寫成如下:

SELECT	COUNT(*)	as	num,	role_main,	role_assist	FROM	heros	GROUP	BY	role_main,	role_assist	ORDER	BY	num	DESC

運行結果:

image

HAVING 與 WHERE 的區別是什麼?

HAVING 和 WHERE 一樣可以進行鍋爐,只是 WHERE 作用於數據行, HAVING 作用於分組

	SELECT	COUNT(*)	as	num,	role_main,	role_assist	FROM	heros	GROUP	BY	role_main,	role_assist	HAVING	num	> 5

運行結果:
image

總結

image

歡迎關注公衆號:程序員開發者社區

程序員開發者社區

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章