|NO.Z.00024|——————————|BigDataEnd|——|Java&MySQL单表/约束/事务.V02|——|MySQL.v02|DQL_聚合函数|

一、聚合函数
### --- 聚合函数

——>    之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,
——>    而使用聚合函数查询是纵向查询,它是对某一列的值进行计算,
——>    然后返回一个单一的值(另外聚合函数会忽略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 = '市场部';

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

posted on 2022-04-05 13:26  yanqi_vip  阅读(25)  评论(0)    收藏  举报

导航