常见函数
二、分组函数
功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:
sum 求和 , avg 平均值 , max 最大值 , min 最小值 , count 计算个数
特点:
1、sum、avg一般用于处理数值型
max、min、count可以处理任何类型
2、以上分组函数都忽略null值
3、可以和distinct搭配使用
4、count函数的单独介绍
一般使用count(*)用作统计行数
5、和分组函数一同查询的字段要求是group by 后的字段,其他的都不行
1、简单的使用
SELECT SUM(salary) FROM employees;
SELECT AVG(salary) FROM employees;
SELECT MIN(salary) FROM employees;
SELECT MAX(salary) FROM employees;
SELECT COUNT(salary) FROM employees;
组合简单使用
SELECT SUM(salary) 和,AVG(salary) 平均,MIN(salary) 最低,MAX(salary) 最高, COUNT(salary) 个数
FROM employees;
SELECT SUM(salary) 和,ROUND(AVG(salary),2) 平均,MIN(salary) 最低,MAX(salary) 最高, COUNT(salary) 个数
FROM employees;
2、参数支持那些类型
SELECT SUM(last_name),AVG(last_name) FROM employees;
SELECT SUM(hiredate),AVG(hiredate) FROM employees;
对于MySQL而言 不报错并不代表一定是对的 例如上面所查询的求和函数以及平均函数,虽然一样可以输出查询数值 但是所要查询的并没有什么实际的意义,所以可以说sum以及avg支持的应该是数值型的。
SELECT MAX(last_name),MIN(last_name) FROM employees;
SELECT MAX(hiredate),MIN(hiredate) FROM employees;
SELECT COUNT(commission_pct) FROM employees;
SELECT COUNT(last_name) FROM employees;
而相对于 max、min以及count来说就不存在类型的限制了。
3、忽略null
SELECT commission_pct FROM employees;
SELECT SUM(commission_pct),AVG(commission_pct),SUM(commission_pct/35),SUM(commission_pct)/107 FROM employees;
SELECT MAX(commission_pct),MIN(commission_pct)FROM employees;
SELECT COUNT(commission_pct) FROM employees;
4、和distinct搭配
SELECT SUM(DISTINCT salary),SUM(salary)FROM employees;
SELECT COUNT(DISTINCT salary)FROM employees;
5、count函数的详细介绍
SELECT COUNT(salary)FROM employees;
SELECT COUNT(*)FROM employees;
一般来说*比直接用表名用的多 都是查询这个表里的所有列数
SELECT COUNT(1)FROM employees;
像这样写其实效果也是一样的,这样是直接在列里写入一个1 ,然后统计1的个数,也可以达到相同的效果
效率:
MYISAM存储引擎下,count(*)的效率高
INNODB存储引擎下,count(*)和count(1)的效率差不多,比count(字段)要高一些
因为当你的括号内的条件为字段时,需要判断这个字段的值是否为空,所以会相对其他两个慢一些
6、和分组函数一同查询的字段有限制
SELECT AVG(salary),employee_id FROM employees;
类似于这个查询,如果单从表格里面来看的话,可能会让人以为employee_id为100的工资为那个数值,但是前面的是由avg函数计算出来的平均值,实际上employee_id为100的salary也不为前面的数值,所以这样的查询并没有什么实际的意义,需要注意一下。