MySQL学习笔记(四)——分组函数,分组查询,连接查询
作者:就叫易易好了
日期:2020/11/18
一、分组函数
功能:用作统计使用,又称为聚合函数或统计函数
分类:
- sum函数
- avg函数
- max函数
- min函数
- count函数
以下代码演示均基于myemployees数据库,可在MySQL学习笔记(一)中下载
#简单的使用案例
SELECT SUM(salary) FROM employees;
作用:求employees表中所有员工的薪水之和
SELECT avg(salary) FROM employees;
作用:求employees表中所有员工薪水的平均值
SELECT max(salary) FROM employees;
作用:求employees表中所有员工的薪水的最大值
SELECT min(salary) FROM employees;
作用:求employees表中所有员工的薪水的最小值
SELECT count(salary) FROM employees;
作用:求salary这个字段的非空值的个数
特点:
- sum,avg一般用于处理数据类型
- max,min,count可以处理任何类型
- sum,avg,max,min,count都忽略null值
#与distinct函数搭配使用
SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;
返回值后者要比前者大很多,因为distinct是去重函数,去掉了表格里面很多重复的值
- 对于count函数的详细介绍
SELECT (*) FROM employees;
在统计的过程中,该行只要用一个值不为null,就能统计上
此语句经常用来统计所有行数的个数,一般用这个语句统计总行数
二、分组查询
如果我们要查询employees表格中各部门的平均工资该怎么办呢?这个时候就需要使用分组查询了。
- group by 语句
语法:
select 分组函数
from 表
where 筛选条件
group by 分组的列表
查询列表必须特殊,要求是分组函数和group by后出现的字段。
#案例:查询每个工种的最高工资
SELECT MAX(salary),jio_id
FROM employees
GROUP BY job_id
#案例:查询每个位置上的部门个数
SELECT COUNT(*),location_id
FROM departments
GROUP BY
location_id;
1、添加筛选条件
#案例1:查询邮件中包含a的字符的,每个部门的平均工资
SELECT AVG(salary),department_id
FROM employees
WHERE
email like '%a%'
GROUP BY
department_id;
#案例2:查询有奖金的每个领导手下员工的最高工资
SELECT
MAX(salary),m