分组函数 功能:用作统计使用,又称为聚合函数或统计函数或组函数 分类: sum求和、avg 平均值、max最大值、min最小值、count 计算个数 特点: 1 sum、avg用于处理数值型 max、min、count可以处理任何类型 2 以上分组函数都忽略null值(null值不参与计算) 3 可以和diatinct搭配实现去重的运算
name | sex | age | score_chinese | score_math | score_english | 张三 | 男 | 16 | 85 | 56 | 90 | 李四 | 女 | 15 | 96 | 75 | 63 | 王二 | 男 | 17 | 99 | 79 | 75 | 赵五 | 男 | 16 | 85 | 90 | 88 |
表名:student SUM()函数SUM(DISTINCT expression) 用于计算一组值或表达式的总和
SELECT SUM(score_chinese) FROM student; #查询全部语文成绩之和
AVG()函数AVG(DISTINCT expression) 用于计算一组值或表达式的平均值,返回数值列的平均值。
SELECT AVG(score_chinese) FROM student;#查询全部语文成绩的平均分
MIN()函数MIN(DISTINCT expression) 用于计算一组值或表达式的最小值,返回数值列的最小值。
SELECT MIN(score_chinese) FROM student;#查询全部语文成绩的最低分
MAX()函数MAX(DISTINCT expression) 用于计算一组值或表达式的最小值,返回数值列的最大值。
SELECT MAX (score_chinese) FROM student;#查询全部语文成绩的最高分
COUNT()函数COUNT(DISTINCT expression) 用来统计表中记录的一个函数,返回匹配条件的行数
SELECT COUNT (score_chinese) FROM student;#查询全部语文成绩的个数 count()用法: (1)count(*)---包括所有列,返回表中的记录数,相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录。 (2)count(1)---忽略所有列,1表示一个固定值,也可以用count(2)、count(3)代替,在统计结果的时候,不会忽略列值为NULL的记录。 (3)count(列名)---只包括列名指定列,返回指定列的记录数,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内。 (4)count(distinct 列名)---只包括列名指定列,返回指定列的不同值得记录数,在统计结果的时候,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内。 3.count(*)&count(1)&count(列名)执行效率比较: (1)如果列为主键,count(列名)效率优于count(1) (2)如果列不为主键,count(1)效率优于count(列名) (3)如果表中存在主键,count(主键列名)效率最优 (4)如果表中只有一列,则count(*)效率最优 (5)如果表有多列,且不存在主键,则count(1)效率优于count(*) 4.因为count(*)和count(1)统计过程中不会忽略列值为NULL的记录,所以可以通过以下两种方式来统计列值为NULL的记录数: (1)select count(*) from table where is_active is null; (2)select count(1) from table where is_active is null; 5.特例:
(1)select count('') from table;-返回表的记录数 (2)select count(0) from table;-返回表的记录数 (3)select count(null) from table;-返回0 转自 :https://www.cnblogs.com/-flq/p/10302965.html
|