原创:oracle聚合函数介绍 <六>
来源:互联网 发布:软件调试 pdf 百度 编辑:程序博客网 时间:2024/05/29 04:46
聚合函数对一组行中的某个列执行计算执行计算并返回单一的值。聚合函数忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用,所以有的时候也把其称之为分组函数。
在下面的介绍过程中我们还重点讲解了group by having等知识点,希望你所有收获!
- 常见的分组函数有:
- 函数名称 函数描述
- 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;
- 非法使用组函数
- 1、 所用包含于SELECT 列表中,而未包含于组函数中的列都必须包含于 GROUP BY 子句中。
- 举例:
- SQL> select empno,count(job) from emp;
- 正确写法如下:
- SQL> select empno,count(job) from emp group by empno;
- 2、 不能在 WHERE 子句中使用组函数(注意)。
- SQL> select deptno from emp where count(job)>0 group by deptno;
- 备注:ORA-00934: 此处不允许使用分组函数
- Having 子句
- HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 子句和 SELECT 语句交互的方式类似。WHERE 子句搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中出现的任意项。
- 备注:having子句通常与group by子句结合使用
- 语法:
- SELECT column, group_function
- FROM table
- [WHERE condition]
- [GROUP BY group_by_expression]
- [HAVING group_condition]
- [ORDER BY column];
- //查询部门的员工人数大于五部门编号
- SQL> select deptno,count(*) from emp group by deptno having count(*)>5;
- 备注:分组函数可以嵌套
- 嵌套函数
- 函数可以嵌套。一个函数的输出可以是另一个函数的输入。操作数有一个可继承的执行过程。但函数的优先权只是基于位置,函数遵循由内到外,由左到右的原则.
- 嵌套函数可以包括在组函数中嵌套单行函数,或者组函数嵌套入单行函数或组函数中
- 总结:整个查询语句的语法格式如下:
- SELECT column, group_function(column)
- FROM table
- [WHERE condition]
- [GROUP BY group_by_expression]
- [HAVING group_condition]
- [ORDER BY column];
- 以上内容归redarmy_chen所有,如需转载请附带出处,如有疑问请发送至redarmy_chen@qq.com
更多学习资源请访问这里
- 原创:oracle聚合函数介绍 <六>
- 原创:oracle中单行函数介绍 <五>
- 原创:oracle聚合函数介绍 (六)
- 原创:oracle入门命令介绍<二>
- 原创:oracle 子查询介绍<七>
- 原创:oracle DML介绍与使用<八>
- 原创:oracle 事务总结<九>
- 原创:oracle 存储过程<十三>
- 原创:oracle:sql介绍及SQL基本查询 <四>
- 原创 oracle 数据完整性总结<十>
- 原创:oracle PL/SQL编程基础 上<十一>
- 原创:oracle PL/SQL编程基础 下<十二>
- 原创: Oracle的远程数据库的连接和用户操作 <三>
- ORACLE修改数据库名<转载>
- oracle死锁原因分析 <转>
- <Effective STL>笔记--仿函数
- ><
- ORACLE函数介绍第三篇 著名函数之聚合函数
- 我关注的是这一道经典的面试题
- 初见CSDN
- 一如既往
- 字符串
- 原创:oracle中单行函数介绍 <五>
- 原创:oracle聚合函数介绍 <六>
- 求一个数阶乘的后面连续0的个数
- 新人报道
- [多图+详解]Android开发环境搭建全程演示(jdk+eclip+android sdk)
- c语言的学习感受
- 异或
- 关于oracle的卸载
- 大家看看我写的英语作文,有哪些需要改进的地方(一)
- 大家看看我写的英语作文,有哪些需要改进的地方(二)