zoukankan      html  css  js  c++  java
  • 分组统计查询

    统计函数

       统计数量:COUNT(*| 列 |  DISTINCT 列);

       求和:SUM(列);

       平均值:AVG(列);

       最大值:MAX(列),可以在日期或字符串上使用;

       最小值:MIN(列),可以在日期或字符上使用 ;

    例:公司工资总和

    SELECT SUM(sal)),SUM(sal+NVL(comm,0)) FROM emp ;

    例:统计公司的平均工资

    SELECT AVG(sal) FROM emp;

    例:统计公司雇佣年限

    SELECT AVG(MONTHS_BETWEEN(SYSDATE,hiredate)/12) FROM emp;

    例:求出公司的最高工资与最低工资

    SELECT MAX(sal),MIN(sal) FROM emp;

    例:求出最早和最晚雇佣日期

    SELECT MIN(hiredate),MAX(hiredate) FROM emp;

    分组统计

    只有两个列有重复才可以分组,SQL之中如果想要实现分组使用GROUP BY子句实现,语法如下

    ④SELECT 分组字段,统计函数【别名】,统计函数【别名】,....

    ①FROM 数据表 【别名】

    ②【WHERE 参与运算的数据行的筛选条件(s)】

    ③【GROUP BY 分组字段】

    ⑤【ORDER BY 排序字段 【ASC | DESC】】

    例:统计出每个职位的人数,平均工资,平均雇佣年限

    SELECT job,COUNT(*),AVG(sal),AVG(MONTHS_BETWEEN(SYSDATE,hiredate)/12)
    FROM emp
    GROUP BY job;

    例:统计每个部门的人数,总工资,平均工资

    SELECT deptno,COUNT(*),SUM(sal),AVG(sal)
    FROM emp
    GROUP BY deptno;

    分组统计的使用限制:

    限制一:在不使用GROUP BY子句的时候,SELECT子句只允许出现统计函数,不允许出现任何其他字段;

     

    限制二:在使用GROUP BY子句的时候,SELECT子句只允许出现分组字段与统计函数,其他的字段不允许出现;

    限制三:统计函数允许嵌套,嵌套后的统计操作SELECT子句中不允许出现任何的字段,包括分组字段;

    HAVING子句

       HAVING主要是针对于分组后的数据的筛选

    ⑤SELECT 分组字段,统计函数【别名】,统计函数【别名】,....

    ①FROM 数据表 【别名】

    ②【WHERE 参与运算的数据行的筛选条件(s)】

    ③【GROUP BY 分组字段】

    ④【HAVING 分组过滤条件(s)】

    ⑥【ORDER BY 排序字段 【ASC | DESC】】

    例:查询工资总和高于9000的部门编号,部门人数,总工资

    SELECT deptno,COUNT(*),SUM(sal)
    FROM emp
    GROUP BY deptno
    HAVING SUM(sal)>9000;

          WHERE子句:是在GROUP BY分组前使用的,目的是确定进行分组的数据,无法使用统计函数;

          HAVING子句:是在GROUP BY分组后使用,目的是针对于分组后的统计进行二次筛选,可以使用统计函数。

  • 相关阅读:
    Delphi 中多线程同步的一些处理方法
    delphi 讲的比较详细的多线程
    Delphi MSComm 实时串口通讯
    Delphi多线程数据库查询(ADO)
    常用学习链接收藏
    Linux目录及常用命令
    DEBUG和INFO的使用
    git命令
    9.9 接口与工厂
    9.4 Java中的多继承
  • 原文地址:https://www.cnblogs.com/fcitx/p/12236644.html
Copyright © 2011-2022 走看看