ORACLE入门03

来源:互联网 发布:移动应用 框架 知乎 编辑:程序博客网 时间:2024/06/11 02:59

分组函数的介绍

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

常见的分组函数有:

函数名称

函数描述

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(DISTINCTexpr) 返回 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子句

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

 

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

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

SQL>select deptno,count(*) as "人数" fromemp 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;

 

非法使用组函数

   

原创粉丝点击