MySQL数据库聚合(分组/多行)函数#count、min、max、avg、sum函数总结

一组数值操作的函数是 group (集合)函数,又称多行/分组/聚合函数。除非另作说明, group 函数会忽略 NULL 值。如果你在一个不包含 ROUP BY子句的语句中使用一个 group(count、min、max、avg、sum)函数 ,它相当于对所有行进行分组(隐式分组操作)。

测试数据表:
在这里插入图片描述

⑴计数 count()

①COUNT(expr) 返回SELECT语句检索到的行中非NULL值的数目。若找不到匹配行,则COUNT() 返回 0

②COUNT(*) 的稍微不同之处在于,它返回检索行的数目, 不论其是否包含 NULL值

③SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度


-- 查询教师的总数
--count(*)count(常量):是一样的查询效果,统计非null值的数目
--count(字段/表达式):只统计非null值的数目

SELECT * FROM teacher_info;
SELECT COUNT(*) FROM teacher_info ;     --6
SELECT COUNT(1) FROM teacher_info;        --6
SELECT COUNT(thiredate) FROM teacher_info;  --5
SELECT COUNT(*) FROM  teacher_info WHERE tsex='女'; --3

⑵求和sum()
SUM([DISTINCT] expr)
返回expr 的总数。 若返回集合中无任何行,则 SUM() 返回NULL。DISTINCT 关键词可用于 MySQL 5.1 中,求得expr 不同值的总和。 若找不到匹配的行,则SUM()返回 NULL。

SELECT SUM(tsalary) FROM teacher_info;  -- 58500
SELECT SUM(tsalary) FROM teacher_info WHERE tsex='女';  -- 36500

⑶求最大值max()

MAX([DISTINCT] expr)

返回expr 的最大值。 MAX() 的取值可以是一个字符串参数;在这些情况下, 它们返回最大字符串值

SELECT MAX(tsalary) FROM teacher_info;  -- 19000
SELECT MAX(tsalary) FROM teacher_info WHERE tsex='男';  -- 12000

⑷求最小值min()

MIN([DISTINCT] expr)

返回expr 的最小值。MIN() 的取值可以是一个字符串参数;在这些情况下, 它们返回最小字符串值

SELECT MIN(tsalary) FROM teacher_info;  -- 8000
SELECT MIN(tsalary) FROM teacher_info WHERE tsex='男';  -- 1000

⑸求平均值avg()

AVG([DISTINCT] expr)

返回expr 的平均值。 DISTINCT 选项可用于返回 expr的不同值的平均值。

若找不到匹配的行,则AVG()返回 NULL 。

SELECT YEAR(CURRENT_DATE())- YEAR(tbirthday) FROM teacher_info; -- 21 19 37 36 33  NULL
SELECT AVG(YEAR(CURRENT_DATE())- YEAR(tbirthday)) FROM teacher_info; -- 29.2000 平均年龄( NULL项忽略不计)

小结:

①统计行数
count(*),count(常量):统计实际行数,包括NULL
count(字符/表达式): 统计实际行数,排除NULL
②求总和
sum(字段/表达式)
③求最大值
max(字段/表达式)
④求最小值
min(字段/表达式)
⑤求平均值
avg(字段/表达式)

#轻松一刻:

在这里插入图片描述


☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!

☞本人博客:https://coding0110lin.blog.csdn.net/  欢迎转载,一起技术交流吧!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值