zoukankan      html  css  js  c++  java
  • 分组统计(6)

    组函数

    在 SQL 中常用的组函数有以下几个:

    • · COUNT():求出全部的记录数
    • · MAX():求出一组中的最大值
    • · MIN():求出最小值
    • · AVG():求出平均值
    • · SUM():求和

    范例:COUNT()函数

    SELECT COUNT(empno) FROM emp ;

    范例:MAX()、MIN(),求最大最小值,一般是针对于数字的应用上。

    • · 求出所有员工的最低工资
    SELECT MIN(sal) FROM emp ;
    • · 求出所有员工的平均工资
    SELECT AVG(sal) FROM emp ;

    分组统计

    要想使用分组统计,则首先应该固定其语法,使用 GROUP BY 进行分组,此时 SQL 语法格式如下:

    SELECT {DISTINCT} * | 查询列 1 别名 1,查询列 2 别名 2,…
    FROM 表名称 1 别名 1 , 表名称 2 别名 2 ,…
    {WHERE 条件(s)}
    {GROUP BY 分组条件}
    {ORDER BY 排序字段 ASC|DESC , 排序字段 ACS | DESC ,…}

    范例;求出每个部门的雇员数量。肯定应该按照部门编号划分,,按 deptno 分组

    SELECT deptno,COUNT(empno)
    FROM emp
    GROUP BY deptno ;

    注意点:观察以下代码

    SELECT deptno,COUNT(empno) FROM emp ;

    以上代码不能正确执行,是因为:
    1、 如果程序中使用了分组函数,则有两种可以使用的情况:

    • · 程序中存在了 GROUP BY,并指定了分组条件,这样可以将分组条件一起查询出来。
    • · 如果不使用分组的话,则只能单独的使用分组函数。

    2、 在使用分组函数的时候,不能出现分组函数和分组条件之外的字段。

    SELECT deptno,empno,COUNT(empno)
    FROM emp
    GROUP BY deptno ;

    此时,提示 empno 不是 GROUP BY 表达式,所以无法使用。 

    范例:要求显示出平均工资大于 2000 的部门编号和平均工资

    • · 条件:AVG(sal) > 2000
    SELECT deptno,AVG(sal)
    FROM emp
    WHERE AVG(sal)>2000
    GROUP BY deptno ;

    分组函数只能在分组中使用,不允许在 WHERE 语句之中出现,那么如果现在假设要指定分组的条
    件,则只能通过第二种条件的指令:HAVING,此时的 SQL 语法格式:

    SELECT {DISTINCT} * | 查询列 1 别名 1,查询列 2 别名 2,…
    FROM 表名称 1 别名 1 , 表名称 2 别名 2 ,…
    {WHERE 条件(s)}
    {GROUP BY 分组条件 {HAVING  分组条件}}
    {ORDER BY 排序字段 ASC|DESC , 排序字段 ACS | DESC ,…}

    范例:使用 HAVING 完成以上的操作

    SELECT deptno,AVG(sal)
    FROM emp
    GROUP BY deptno HAVING AVG(sal)>2000 ;

    分组的简单原则:

    • · 只要一列上存在重复的内容才有可能考虑到分组

    注意:

    • · 分组函数可以嵌套使用,但是在组函数嵌套使用的时候不能再出现分组条件的查询语句。

    范例:求出平均工资最高的部门工资

    • · 错误的代码:
    SELECT deptno,MAX(AVG(sal))
    FROM emp
    GROUP BY deptno ;

    SELECT MAX(AVG(sal))
    FROM emp
    GROUP BY deptno ;


    • · 统计函数:COUNT()、AVG()、SUM()、MAX()、MIN()
    • · 统计函数必须出现在分组统计之中,所谓的分组就是指列中存在重复的内容,使用 GROUP BY
    • 的方式进行分组的统计
    • · 如果要加入分组条件,则编写 HAVING 子句,所有的统计函数作为条件的话只能在 HAVING 中
    • 出现,不能在 WHERE 中出现
    • · 在使用分组的时候,一定要注意,查询的时候只能出现分组函数或是分组条件
    • · 分组函数允许嵌套,但是嵌套之后就不能在查询其他的字段,包括分组字段
  • 相关阅读:
    Dockfile编写常见命令
    coreDNS域名无法解析问题
    开源软件
    容器相关
    日常工具
    持续集成
    mysql主从同步
    生产环境MySQL5.7-my.cnf 配置文件 for linux (转)
    工作交接流程引导图
    文章记录
  • 原文地址:https://www.cnblogs.com/aaron911/p/7764723.html
Copyright © 2011-2022 走看看