乘风原创程序

  • SQL 中的聚集函数?
  • 2020/7/7 14:22:30
  • 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

    欢迎关注公众号:程序员开发者社区

    程序员开发者社区

    本文地址:https://blog.csdn.net/wangming520liwei/article/details/107167987