• 第六节:分组函数


    一、分组函数

      1、分组函数

        功能:用作统计使用,又称为聚合函数或统计函数或组函数;

      2、分类

    sum 求和
    avg 平均值
    max 最大值
    min 最小值
    count 计算个数
    

      

      3、特点

        (1)sum 与 avg 一般用于处理数值型;max、min、count 可以处理任何类型;
        (2)以上所有的分组函数都忽略 null 值;
        (3)可以和 distinct 搭配去实现去重的运算,即先去重,再进行运算;
        (4)count 函数的单独介绍一般使用 count(*) 用作统计行数;
        (5)和分组函数一同查询的字段要求是 group by 后的字段;

    二、案例

      1、简单使用

    SELECT SUM(salary) FROM employees;
    
    SELECT AVG(salary) FROM employees;
    
    SELECT MIN(salary) FROM employees;
    
    SELECT MAX(salary) FROM employees;
    
    SELECT COUNT(salary) FROM employees;
    
    SELECT SUM(salary) 和, AVG(salary) 平均, MAX(salary) 最高, MIN(salary) 最低, COUNT(salary) 个数 FROM employees;
    
    SELECT ROUND(AVG(salary), 2) FROM employees;
    

      

      2、参数支持哪些类型

    SELECT SUM(last_name), AVG(last_name) FROM employees;  #不支持字符型
    
    SELECT MAX(last_name), MIN(last_name), COUNT(last_name) FROM employees; #支持字符型
    
    SELECT MAX(hiredate), MIN(hiredate), COUNT(hiredate) FROM employees;    #支持日期等类型
    
    SELECT COUNT(commission_pct) FROM employees;  #不支持 null
    
    SELECT COUNT(last_name) FROM employees;       # 支持字符型
    

      

      3、是否忽略 null 值

    SELECT SUM(commission_pct), AVG(commission_pct) FROM employees;  #不包含 null值
    
    
    SELECT SUM(commission_pct), AVG(commission_pct), SUM(commission_pct)/35,SUM(commission_pct)/107
    FROM employees;
    
    
    SELECT MAX(commission_pct), MIN(commission_pct), COUNT(commission_pct) FROM employees;  #不包含null值
    
    
    SELECT COUNT(commission_pct) FROM employees;  #不会统计 null 值
    

      

      4、与 distinct 搭配

        聚合函数可以和 distinct 搭配使用。

        案例:

    SELECT SUM(DISTINCT salary), SUM(salary) FROM employees;
    
    SELECT COUNT(DISTINCT salary), COUNT(salary) FROM employees;
    

      

      5、count 详细介绍

        count() 用于统计记录的个数,里面参数可以是字段名或常量值。

        案例:

    SELECT COUNT(salary) FROM employees;
    
    SELECT COUNT(*) FROM employees;  #统计总行数,只要有任何一个字段不为null就计数
    
    SELECT COUNT(1) FROM employees;  #统计总行数,为每行前面加一个字段,然后统计有多少行
    
    SELECT COUNT('A') FROM employees; #相当于为每行前面加一个常量值,然后统计行数
    

      

      6、和分组函数一同查询的字段有限制

        和分组函数一同查询的字段一般都需要明确的意义,像下面的SQL语句可以正常执行,但是没有任何意义。

        例如:

    SELECT AVG(salary), employee_id FROM employees;
    

      

    三、练习

      1、查询公司员工工资的最大值,最小值,平均值,总和

    SELECT 
      MAX(salary) 最大值,
      MIN(salary) 最小值,
      AVG(salary) 平均值,
      SUM(salary) 和 
    FROM
      employees ;
    

      

      2、查询员工表中的最大入职时间和最小入职时间的相差天数 (DIFFRENCE)

        datediff(date1, date2):计算两个日期的时间差。

        例如:

    SELECT DATEDIFF('1995-2-7','1995-2-4'); #3
    

         利用函数

    SELECT 
      DATEDIFF(MAX(hiredate), MIN(hiredate)) DIFFRENCE 
    FROM
      employees ;  #8735

      3、查询部门编号为 90 的员工个数

    SELECT 
      COUNT(*) 
    FROM
      employees 
    WHERE department_id = 90 ;
    

      

     

  • 相关阅读:
    c# ThreadPool 判断子线程全部执行完毕的四种方法
    很多人都爱玩的lol..
    Go 的位操作
    wrk压测工具
    Go函数作为值与类型
    家用PC发展设想
    开车的烦恼
    一款一体机的设想
    nodejs开发环境的搭建
    Python网页抓取程序(续)
  • 原文地址:https://www.cnblogs.com/niujifei/p/14886363.html
Copyright © 2020-2023  润新知