DQL 语言 --分组函数 07

一、分组函数

  1、分类
    max 最大值
    min 最小值
    sum 和
    avg 平均值
    count 计算个数
 
  2、特点
    ①语法
      select max(字段) from 表名;
    ②支持的类型
      sum和avg一般用于处理数值型
      max、min、count可以处理任何数据类型
    ③以上分组函数都忽略null
    ④都可以搭配distinct使用,实现去重的统计
      select sum(distinct 字段) from 表;
    ⑤count函数
      count(字段):统计该字段非空值的个数
      count(*):统计结果集的行数
  
      案例:查询每个部门的员工个数
        1      xx     10
        2      dd     20
        3     mm    20
        4      aa     40
        5      hh     40
      count(1):统计结果集的行数
      效率上:
        MyISAM存储引擎,count(*)最高
        InnoDB存储引擎,count(*)和count(1)效率>count(字段)
    ⑥ 和分组函数一同查询的字段,要求是group by后出现的字段
 
 
#1、常用函数 的使用
SELECT SUM(salary) 和,ROUND(AVG(salary),2) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT(salary) 个数
FROM employees;

 #2、参数支持哪些类型

SELECT SUM(last_name) ,AVG(last_name) FROM employees;     #不支持

 

SELECT SUM(hiredate) ,AVG(hiredate) FROM employees;        #不支持

 

SELECT MAX(last_name),MIN(last_name) FROM employees;    #支持

 

SELECT MAX(hiredate),MIN(hiredate) FROM employees;   #支持

 

SELECT COUNT(commission_pct) FROM employees;    #支持

 

SELECT COUNT(last_name) FROM employees;     #支持

 

#3、是否忽略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) FROM employees;    #忽略

 

SELECT COUNT(commission_pct) FROM employees;     #忽略

 

 #4、和distinct搭配

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

 

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

 

#5、count函数的详细介绍

SELECT COUNT(*) FROM employees;    #统计行数

SELECT COUNT(1) FROM employees;      #加常量值 等价于 统计行数

 

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

SELECT AVG(salary),employee_id  FROM employees;      #后面字段显示不完

 

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

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

 

 

 

 

 

posted on 2020-07-29 15:57  lfw123  阅读(158)  评论(0编辑  收藏  举报

导航