`
z_xiaofei168
  • 浏览: 201007 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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分组函数之ROLLUP的基本用法

    本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as select * from scott.dept; create table emp as select * from ...

    oracle分组函数(ppt文档).ppt

    Oracle 分组函数 Oracle 分组函数是一种特殊的函数,用于对查询结果进行分组处理。分组函数可以对查询结果进行聚合操作,例如计算平均值、总和、最小值、最大值等。 Oracle 提供了多种分组函数,包括 AVG、SUM、...

    oracle笔记分组函数

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

    oracle分组函数

    ### Oracle 分组函数详解 #### 一、章节目标与内容概览 在Oracle数据库中,分组函数(也称为聚合函数)是一种强大的工具,用于处理数据集并从中提取有用的信息。通过本章节的学习,读者将能够理解单行函数与分组...

    Oracle数据库使用分组函数来对数据进行聚集

    Oracle数据库使用分组函数来对数据进行聚集

    oracle常用函数介绍

    Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,它提供了丰富的内置函数来帮助用户处理和操作数据。在本篇文章中,我们将深入探讨Oracle中的常用函数,这些函数对于日常的SQL查询、数据处理以及数据库...

    ORACLE分析函数教程

    通过本文的介绍,我们可以了解到Oracle分析函数的强大之处,尤其是在处理复杂的分析需求时。这些函数不仅简化了SQL查询,而且提高了数据处理的效率。理解并熟练掌握这些函数对于Oracle开发者来说至关重要。在实际...

    Oracle函数大全-详细介绍.rar

    "oracle函数介绍(6) 著名函数之分析函数.doc","oracle函数介绍(7) 非著名函数之分析函数.doc"以及"oracle分析函数.doc"深入介绍了这些高级函数,帮助理解如何利用它们进行复杂的数据分析。 最后,"oracle函数介绍...

    oracle函数和分组

    本篇将详细介绍一些常用的Oracle内建函数,特别是字符函数、数字函数以及分组相关的GROUP BY子句和HAVING子句。 首先,我们来看字符函数。字符函数主要用于处理文本数据,包括: 1. **UPPER函数**:将输入的字符串...

    SQLServer和Oracle的常用函数对比

    在数据库管理领域,SQLServer与Oracle作为两大主流的数据库管理系统,各自拥有丰富的内置函数,用于数据处理、查询优化以及各种复杂的数据操作需求。本文将基于给定文件信息,深入探讨和对比SQLServer与Oracle中的...

    oracle分析函数.doc

    - 分组函数:如`NTILE()`,将数据行分成等大小或不等大小的组。 - 首尾函数:`FIRST_VALUE()`, `LAST_VALUE()`,返回指定列的首行或尾行值。 - 移动聚合函数:`SUM()`, `AVG()`, `MIN()`, `MAX()`等,在分析窗口...

    oracle 内置函数大全

    7. **排序和分组函数**: - `RANK()`, `DENSE_RANK()` 和 `ROW_NUMBER()`:在分组或排序结果中生成行号。 - `GROUP BY column1, column2, ...`:按指定列进行分组。 - `ORDER BY column1 [ASC|DESC], column2 ...

    oracle日常函数文档

    七、连接和分组函数 在SQL查询中,`CONNECT_BY_ROOT`, `LEVEL`, `START WITH`和`CONNECT BY`用于构建层次查询;`GROUP BY`和`HAVING`则用于数据的分组和过滤,它们是数据分析和报表生成的基础。 以上只是Oracle日常...

    oracle分析函数文档

    Oracle分析函数是一种强大的工具,它允许用户对分组数据执行复杂的计算,并且结果可以根据特定条件进行动态调整。这种灵活性使得Oracle分析函数在处理复杂的数据集时非常有用,尤其是在需要进行高级数据分析或报表...

    oracle内置函数大全

    下面将详细介绍Oracle的一些核心内置函数,以帮助你更好地理解和应用它们。 1. 数学函数: - `ABS()`:返回一个数的绝对值。 - `MOD()`:返回两个数相除后的余数。 - `SQRT()`:计算平方根。 - `ROUND()`:四舍...

    Oracle中分组后拼接分组字符串.pdf

    本文主要介绍了在 Oracle 中如何对分组后的数据进行拼接操作,生成分组字符串。下面将对这个问题进行详细的分析和解释。 首先,我们需要创建一个测试表,并插入一些测试数据。这个测试表的结构如下: ```sql ...

    oracle分组排序统计高级用法

    #### 一、Oracle分组排序和统计概述 在Oracle数据库中,实现分组排序和统计是一项常见的需求,主要用于处理大量的数据,并从中提取有价值的信息。通过合理运用SQL语句,特别是`GROUP BY`、`ORDER BY`以及分析函数等...

    oracle最常用的函数或方法总结

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其丰富的函数和方法库为SQL查询提供了强大的支持。在日常的数据操作和分析中,掌握一些常用的Oracle函数和方法是至关重要的。以下是对"Oracle最常用的...

    ORACLE分析函数大全

    Oracle分析函数是数据库管理系统Oracle中的一个强大特性,它允许用户在SQL查询中执行复杂的分析操作。分析函数在处理报表和数据迁移任务时尤其有用,因为它们可以基于分组计算聚合值,并为每个分组返回多行,而不...

Global site tag (gtag.js) - Google Analytics