`
z_xiaofei168
  • 浏览: 197895 次
  • 性别: 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笔记分组函数

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

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

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

    oracle分组函数

    oracle的分组函数的概述,以及详细的介绍

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

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

    SQLServer和Oracle的常用函数对比

    SQLServer和Oracle的常用函数对比

    包含了所有的oracle函数文档

    Oracle 函数分类 :单行函数 分组函数 分析函数单行函数分为:日期函数 数字函数 字符函数 转换函数 其他函数分组函数分为:max(最大值) min(最小值) sum(求和) avg(平均) count(求个数) 分析函数分为:rank() 具有相同...

    ORACLE单行函数和组函数

    ORACLE单行函数和组函数,doc文档,使用Oracle时的必备参考文档。

    分组函数笔记

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

    oracle分组排序统计高级用法

    oracle如何实现分组排序和统计、聚集,如何分组求top N,什么是over分析函数,row_number(),rank(),dense_rank()区别又是什么, 如何找到一条记录的前后值,这份文档写得太好了。

    oracle函数和分组

    一些關于orcle內嵌的函數和分組,如日期,字答處理(to_char, decode()....)

    oracle(数据类型函数).

    里面有详细的oracle函数 1、Oracle数据类型 2、Oracle函数分为单行函数和多行函数两大类(sql_function) ... 字符函数 数值函数 日期函数 转换函数 通用函数 函数嵌套 分组函数:集合操作符(了解) 实现分页等等

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

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

    oracle函数介绍(5) 分析函数简述.doc

    分析函数的语法结构比较复杂,但多数函数都具有相同的语法结构,所以先在之前进行统一介绍,后续单个函数介绍时就不过多说明函数语法结构了。  基本上所有的分析函数均是这种格式:  函数名称 ([参数]) OVER ...

    Oracle函数大全实例

    总结了开发中Oracle常用到的一些函数,希望对大家有所帮助。 1、单行函数:表的每行都会有一个结果(字符函数、数字函数、日期函数、转换函数) 单行函数可以嵌套。...3、分组函数:AVG、COUNT、MAX、MIN、SUM

    Oracle之分析函数.pdf

    分析函数是 Oracle 专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计。本文总结了若干分析函数的使用方式,供大家学习参考,有...

    ORACLE 常用分析函数

    主要包括分析函数(OVER);分析函数2(Rank, Dense_rank, row_number);分析函数3(Top/Bottom N、First/Last、NTile);窗口函数;报表函数;分析函数总结;...而row_number则不管是否有重复行,(分组内)序列值始终递增

    oracle高级函数说明

    包含Oracle常用的高级函数,比如取前N名,每个分组的前N名等。 详细介绍Oracle分析函数(OVER、Rank、Dense_rank、row_number、Top/Bottom N、First/Last、NTile) ,窗口函数,报表函数

Global site tag (gtag.js) - Google Analytics