ORACLE入门03

    技术2022-05-20  31

    分组函数的介绍

    分组函数作用于一组数据,并对一组数据返回一个值.

    常见的分组函数有:

    函数名称

    函数描述

    Count

    返回找到的记录数

    Min

    返回一个数字列或计算列的最小值

    Max

    返回一个数字列或计算列的最大值

    Sum

    返回一个数字列或计算列总和

    avg

    返回一个数字列或计算列的平均值

     

     

    分组函数的语法:

    SELECT     [column,] group_function(column), ...

    FROM                table

    [WHERE   condition]

    [GROUP BY      column]

    [ORDER BY       column];

    //返回总记录数   //* 代表的是:一条记录

    SQL> select count(*) from emp;

    //返回comm不为空的总记录数

    SQL> select count(comm) from emp;

    //COUNT(DISTINCT expr) 返回 expr非空且不重复的记录总数

    SQL> select count(distinct(sal)) from emp;

    注意:组函数忽略空值。

    //返回所有员工的平均工资  

    SQL> select avg(nvl(sal,0)) from emp;

    注意:NVL函数使分组函数无法忽略空值

    //返回员工编号最小值  

    SQL> select min(empno) from emp;

    //返回员工工资最大值

    SQL> select max(sal) from emp;

    //求该月本公司发出的工资总额

    SQL> select sum(comm)+sum(sal) from emp;

    SQL> select sum(nvl(sal,0)+nvl(comm,0)) from emp;

     

    Group by子句

    Group By语句从英文的字面意义上理解就是根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 如果在查询的过程中需要按某一列的值进行分组,以统计该组内数据的信息时,就要使用group by子句。不管select是否使用了where子句都可以使用group by子句。

     

    注意:group by子句一定要与分组函数结合使用,否则没有意义。

    //求出每个部门的员工人数

    SQL> select deptno,count(*) as "人数" from emp group by deptno;

    //求出每个部门的员工的平均工资

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

    //注意:group by 子句中的列不必包含在SELECT 列表中

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

     

    //求出某个部门中相同职位的员工人数   group by 后可以跟多个分组的字段

    SQL> select deptno,job,count(*) from emp group by deptno,job order by deptno;

     

    非法使用组函数

       


    最新回复(0)