一、聚合函数
### --- 聚合函数
——> 之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,
——> 而使用聚合函数查询是纵向查询,它是对某一列的值进行计算,
——> 然后返回一个单一的值(另外聚合函数会忽略null空值。);
### --- 语法结构
SELECT 聚合函数(字段名) FROM 表名;
我们来学习5个聚合函数
聚合函数 | 作用 |
count(字段) | 统计指定列不为NULL的记录行数 |
sum(字段) | 计算指定列的数值和 |
max(字段) | 计算指定列的最大值 |
min(字段) | 计算指定列的最小值 |
avg(字段) | 计算指定列的平均值 |
二、需求1
### --- 需求1
~~~ 查询员工的总数
~~~ 查看员工总薪水、最高薪水、最小薪水、薪水的平均值
~~~ 查询薪水大于4000员工的个数
~~~ 查询部门为'教学部'的所有员工的个数
~~~ 查询部门为'市场部'所有员工的平均薪水
### --- SQL实现
~~~ # 查询员工的总数
-- 统计表中的记录条数 使用 count()
SELECT COUNT(eid) FROM emp; -- 使用某一个字段
SELECT COUNT(*) FROM emp; -- 使用 *
SELECT COUNT(1) FROM emp; -- 使用 1,与 * 效果一样
-- 下面这条SQL 得到的总条数不准确,因为count函数忽略了空值
-- 所以使用时注意不要使用带有null的列进行统计
SELECT COUNT(dept_name) FROM emp;
~~~ # 查看员工总薪水、最高薪水、最小薪水、薪水的平均值
-- sum函数求和, max函数求最大, min函数求最小, avg函数求平均值
SELECT
SUM(salary) AS '总薪水',
MAX(salary) AS '最高薪水',
MIN(salary) AS '最低薪水',
AVG(salary) AS '平均薪水'
FROM emp;
~~~ # 查询薪水大于4000员工的个数
SELECT COUNT(*) FROM emp WHERE salary > 4000;
~~~ # 查询部门为'教学部'的所有员工的个数
SELECT COUNT(*) FROM emp WHERE dept_name = '教学部';
~~~ # 查询部门为'市场部'所有员工的平均薪水
SELECT
AVG(salary) AS '市场部平均薪资'
FROM emp
WHERE dept_name = '市场部';
三、sql语句
### --- sql语句
/*
聚合函数
作用:将一列数据作为一个整体,进行纵向的计算的
常用的聚合函数
count(字段) 统计记录数
sum(字段) 求和操作
max(字段) 求最大值
min(字段) 求最小值
avg(字段) 求平均值
语法格式
select 聚合函数(字段名) from 表名 [where 条件]
*/
~~~ # 查询员工的总数
SELECT COUNT(*) FROM emp;
SELECT COUNT(1) FROM emp;
SELECT COUNT(eid) FROM emp;
-- count函数 在统计的时候回忽略空值
-- 注意 不要使用带空值的列 进行 count
SELECT COUNT(dept_name) FROM emp;
~~~ # 查看员工总薪水、最高薪水、最小薪水、薪水的平均值
SELECT
SUM(salary) AS '总薪水',
MAX(salary) '最高薪水',
MIN(salary) '最小薪水',
AVG(salary) '平均薪水'
FROM emp
~~~ # 查询薪水大于4000员工的个数
SELECT COUNT(*) FROM emp WHERE salary > 4000;
~~~ # 查询部门为'教学部'的所有员工的个数
SELECT COUNT(*) FROM emp WHERE dept_name = '教学部';
~~~ # 查询部门为'市场部'所有员工的平均薪水
SELECT AVG(salary) FROM emp WHERE dept_name = '市场部';