`
yinghuayu1324117
  • 浏览: 69647 次
  • 性别: Icon_minigender_2
  • 来自: 保定
文章分类
社区版块
存档分类

oracle笔记(十五)分组函数的介绍

阅读更多

分组函数的介绍

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

常见的分组函数有:

函数名称

函数描述

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];

 

 

分享到:
评论

相关推荐

    oracle笔记分组函数

    oracle笔记分组函数,涉及组函数案例,在使用组函数的过程中注意事项,有具体的案例说明!

    分组函数笔记

    个人笔记,oracle分组函数笔记。仅供参考,有错误也不要找我

    oracle笔记(存储过程函数触发器游标流程控制等)

    这份"oracle笔记(存储过程函数触发器游标流程控制等)"涵盖了Oracle数据库管理中的关键知识点,包括但不限于以下几个方面: 1. **存储过程与函数**:存储过程是预编译的SQL语句集合,用于执行特定任务。它们可以提高...

    Oracle学习笔记

    Oracle学习笔记是李兴华老师编写的Oracle从入门到精通的学习笔记,涵盖了 Oracle 的多表查询、连接、组函数和分组统计等知识点。在本篇笔记中,李兴华老师详细介绍了多表查询的基本语法、左右连接、交叉连接、自然...

    oracle培训笔记2

    1. 分组函数:如COUNT、SUM、AVG、MAX、MIN等,用于对一组数据进行聚合操作。 2. 分区函数:如RANK、DENSE_RANK、ROW_NUMBER,用于在分组后的数据中为每一行分配一个唯一的排名。 3. LAG和LEAD函数:向前或向后查看...

    三思笔记之Oracle函数.rar

    在"三思笔记之Oracle函数"中,作者深入浅出地解析了Oracle数据库中的各种函数,这些函数是进行数据查询、计算和处理的核心工具。本笔记详细介绍了以下几个方面: 1. **数学函数**:包括ABS()用于返回绝对值,MOD()...

    oracle 分析函数学习笔记

    Oracle 分析函数是一种高级SQL功能,它允许在单个查询中对数据集进行复杂的分析,无需额外的编程或多次数据库交互。分析函数处理的结果通常基于数据的分组、排序或特定窗口,为统计汇总和复杂的数据分析提供了便利。...

    Oracle学习笔记精华版

    此外,可能还会涉及到高级SQL特性,如子查询、连接查询、集合操作、窗口函数以及分组和聚合函数等。 事务管理是Oracle中的关键概念,确保数据的一致性和完整性。笔记可能包含关于事务的开始、提交、回滚以及并发...

    Oracle 笔记 详解 资料 用例

    在数据库对象方面,Oracle笔记详细介绍了表的创建和管理,包括数据类型、约束条件、索引的创建和使用。索引是提升查询性能的关键,笔记会涵盖B树索引、位图索引、函数索引等多种类型,并解释它们的适用场景。此外,...

    oracle经典笔记

    《Oracle经典笔记》是一份深度探讨Oracle数据库管理系统的综合学习资料。这份笔记涵盖了从Oracle PL/SQL编程到SQL查询语言的广泛主题,旨在帮助读者深入理解Oracle数据库的运作机制和应用技巧。 首先,我们来看看...

    2011MLDN李兴华Oracle课堂笔记PDF档

    3. **02-简单查询、限定查询、单行函数.pdf**:这部分可能深入讲解SQL语言,包括基本的SELECT查询语句,如何进行限定条件的查询,以及Oracle支持的各种单行函数,如TO_CHAR、ROUND等。 4. **03-习题讲解1及多表查询...

    Oracle高级操作函数学习笔记

    Oracle数据库作为一个强大的关系型数据库管理系统,提供了多种高级操作函数来支持复杂的数据处理。以下是从标题、描述和部分内容中提取的Oracle高级操作函数的知识点。 ### 分支判断函数 #### DECODE函数 DECODE...

    Oracle数据库课堂笔记

    以下是对Oracle数据库课堂笔记的详细解析,涵盖了从基础到进阶的重要知识点。 第一讲:Oracle简介 Oracle数据库是由甲骨文公司开发的,提供了一整套数据存储、管理和检索解决方案。它支持多种操作系统和硬件平台,...

    数据库SQL oracle的笔记,比较全面的

    数据库SQL Oracle笔记全面解析 在IT领域,数据库是存储、管理与检索数据的核心工具,而Oracle作为世界上最流行的商业数据库管理系统之一,其强大的功能和广泛的应用使得掌握Oracle SQL变得至关重要。本笔记将涵盖...

    oracle 全套笔记

    102_简单SQL语句.pdf: 这部分笔记将详述SQL语言的基础,包括SELECT查询、INSERT插入、UPDATE更新、DELETE删除等基本操作,以及更复杂的子查询、连接查询、聚合函数和分组排序等高级功能。了解并熟练掌握SQL是使用...

    李兴华oracle笔记

    分组函数本身允许嵌套,嵌套之后的查询里面不能再出现任何的其他字段,包括分组字段。如果要对分组后的数据再次进行过滤,则使用 HAVING 子句完成。 2.4、子查询 子查询是在一个查询之中嵌入了若干个小的查询,子...

    Oracle-笔记.doc

    这份“Oracle笔记”涵盖了从数据库基础到高级特性的多个方面,是学习和掌握Oracle数据库的重要参考资料。 第一章 数据库介绍:这部分可能涉及数据库的基本概念,如数据库的定义、分类,以及Oracle在其中的地位和...

    (转)最全的SQL(Oracle)笔记集录

    此外,可能还包括了用于数据检索的SELECT语句,这些语句可能涉及了聚合函数、排序、分组、连接等多种复杂操作。 综上所述,这个“最全的SQL(Oracle)笔记集录”资源很可能是数据库管理员、开发人员或学习者宝贵的...

    学习oracle笔记(word版本)

    以下是一些从“学习Oracle笔记”中提取的关键知识点: 1. **DECODE 函数**:DECODE 函数在Oracle SQL中用于替代简单的IF...ELSE逻辑。在示例中,`decode(sex, '男', 1, 0)` 意味着如果性别为'男',则返回1,否则...

Global site tag (gtag.js) - Google Analytics