一组数值操作的函数是 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/ 欢迎转载,一起技术交流吧!