mysql 分组函数(统计函数)

2019-06-19  本文已影响0人  哈斯勒
#分组函数
#用作统计使用,又称为聚合函数或组函数
/*
sum:
avg
max
min
count:

*/
SELECT SUM(salary) FROM employees;

SELECT AVG(salary) FROM employees;

SELECT MAX(salary) FROM employees;

SELECT MIN(salary) FROM employees;

SELECT COUNT(salary) FROM employees;


# 使用特点
#参数类型支持哪些类型: 
#sum avg : 数值型
#max min : 任何类型
#count :非空值个数


#是否忽略null值: 
# sum null值不参与运算
# avg 忽略null值
# max min 
# count 忽略


# 可以和distinct 搭配
SELECT SUM(DISTINCT salary), SUM(salary) FROM employees;
SELECT COUNT(DISTINCT salary), COUNT(salary) FROM employees;

#count 的详细介绍
SELECT COUNT(salary) FROM employees;

# 任何非空列都包括
# 常用来统计包含多少行
SELECT COUNT(*) FROM employees; //只要每列的值不全为空,都计算在内

SELECT COUNT(1) FROM employees; //相当于添加一列,每列值为1,统计1的个数

#效率
MYISAM存储引擎下,COUNT(*)的效率高
INNODB存储引擎下,COUNT(*)和COUNT(1)的效率差不多,比COUNT(字段)要高一些
COUNT(字段)需要判断字段的值是否为null,为null不计算在内,涉及到筛选操作

#和分组函数一同查询的字段要求是group by 后的字段
SELECT AVG(salary),employee_id FROM employees;
此处employee_id没有意义


#  查询最大入职天数和最小入职天数的相差天数
SELECT DATEDIFF(MAX(hiredate),MIN(hiredate)) FROM employees;

# 查询部门为90的员工个数
 SELECT COUNT(*) FROM employees
WHERE department_id=90;
上一篇下一篇

猜你喜欢

热点阅读