Oracle中的分组

1.分组查询概念

什么是分组查询:分组查询是按照一定的规则进行分组,分组以后数据会聚合,需要使用聚合函数,但是使用聚合函数不一定要分组,分组的关键字是group by。

按照deptno分组,说明deptno只有10 ,20,30

SQL> select deptno from emp group by deptno;

    DEPTNO
----------
        30
        20
        10

2.分组与聚合函数

分组查询时,不在组函数(多行函数/聚合函数)中的列,必须在group by中。

SQL> select deptno ,avg(sal) from emp group by deptno;

    DEPTNO   AVG(SAL)
---------- ----------
        30 1566.66667
        20       2175
        10 2916.66667

3.多层分组

  • 各个部门中各个工作 的平均工资
    可以在Having使用多行函数count min avg
    但是 不能在where中使用多行函数
SQL> select deptno,job,avg(sal) from emp group by deptno ,job ;

    DEPTNO JOB                  AVG(SAL)
---------- ------------------ ----------
        20 CLERK                     950
        30 SALESMAN                 1400
        20 MANAGER                  2975
        30 CLERK                     950
        10 PRESIDENT                5000
        30 MANAGER                  2850
        10 CLERK                    1300
        10 MANAGER                  2450
        20 ANALYST                  3000

4.having

对行筛选用where,对组进行筛选用Having

SQL> select deptno,job,avg(sal) from emp group by deptno,job having avg(sal)>2000;

    DEPTNO JOB                  AVG(SAL)
---------- ------------------ ----------
        20 MANAGER                  2975
        10 PRESIDENT                5000
        30 MANAGER                  2850
        10 MANAGER                  2450
        20 ANALYST                  3000
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页