本文共 1330 字,大约阅读时间需要 4 分钟。
分组函数的介绍 分组函数作用于一组数据,并对一组数据返回一个值. 常见的分组函数有: 函数名称 函数描述 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; 非法使用组函数转载地址:http://djlmi.baihongyu.com/