Mysql学习笔记(006)-常见函数-分组函数
分组函数
1 #二、分组函数 2 /* 3 功能:用作统计使用,又称为聚合函数或统计函数或组函数 4 5 分类: 6 sum 求和、avg 平均值 max最大值 min最小值 count计算个数 7 8 特点: 9 1、sum、avg一般用于处理数值型 10 max、min、count可以处理任何类型 11 2、以上分组函数都忽略null值 12 13 3、可以和distinct搭配实现去重的运算 14 15 4、count函数的单独介绍 16 一般使用count(*)用作统计行数 17 18 5、和分组函数一同查询的字段要求是group by后的字段 19 20 */ 21 #1、简单的使用 22 SELECT SUM(salary) FROM employees; 23 SELECT AVG(salary) FROM employees; 24 SELECT MAX(salary) FROM employees; 25 SELECT MIN(salary) FROM employees; 26 SELECT COUNT(salary) FROM employees; 27 28 SELECT SUM(salary) 和,AVG(salary) 平均,MAX(salary) 最大,MIN(salary) 最小,COUNT(*) 个数 29 FROM employees; 30 31 SELECT SUM(salary) 和,ROUND(AVG(salary),2) 平均,MAX(salary) 最大,MIN(salary) 最小,COUNT(*) 个数 32 FROM employees; 33 34 #2、参数支持哪些类型 35 SELECT SUM(last_name),AVG(last_name) FROM employees;#不报错,但是没有逻辑意义,不像java强制 36 SELECT SUM(hire_date) FROM employees; 37 38 SELECT MAX(last_name),MIN(last_name) FROM employees; 39 40 SELECT MAX(hire_date),MIN(hire_date) FROM employees; 41 SELECT COUNT(commission_pet) FROM employees 42 SELECT COUNT(last_name) FROM employees; 43 44 #3、忽略null 45 SELECT SUM(commission_pet), AVG(commission_pet),SUM(commission_pet)/35,SUM(commission_pet)/107 FROM employees; 46 SELECT MAX(commission_pet), MIN(commission_pet) FROM employees; 47 SELECT COUNT(commission_pet) FROM employees; 48 SELECT commission_pet FROM employees; 49 50 #4、和distinct搭配 51 SELECT SUM(DISTINCT salary),SUM(salary) FROM employees; 52 SELECT COUNT(DISTINCT salary),COUNT(salary) FROM employees; 53 54 #5、count函数的详细介绍 55 SELECT COUNT(salary) FROM employees; 56 SELECT COUNT(*) FROM employees; 57 SELECT COUNT(1) FROM employees;#相当于加了一列1,计算该列1个数 58 59 效率: 60 MYISAM 存储引擎下,count(*)的效率最高,内部有计数器 61 INNODB 存储引擎下,count(*)和count(1)的效率差不多,比count(字段)要高一些#字段会先做筛选判断 62 63 #6、和分组函数一同查询的字段有限制 64 SELECT AVG(salary),employee_id FROM employees; #5.5可以通过,5.71140报错 65
小结
练习:
#1.查询公司员工工资的最大值,最小值,平均值以及总和
SELECT MAX(salary) mx_sal,MIN(salary) mi_sal,ROUND(AVG(salary),2) ag_sal,SUM(salary) sm_sal
FROM employees;
#2.查询员工表中的最大入职时间和最小入职时间的相差天数
SELECT DATEDIFF('2019-1-3','2019-1-8');
SELECT DATEDIFF(NOW(),'1998-1-1');
SELECT DATEDIFF(MAX(hiredate),MIN(hiredate))
FROM employees;
#3.查询员工部门编号为90的员工个数
SELECT COUNT(*)
FROM employees
WHERE department_id=90;

浙公网安备 33010602011771号