oracle 分组函数介绍

原创 2012年03月21日 20:33:18
 

分组函数

         通过今天学习分组函数,我们有以下的学习内容。

1、  什么是分组函数?

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

2、  常见的分组函数有:

函数名称

函数描述

Count

返回找到的记录数

Min

返回一个数字列或计算列的最小值

Max

返回一个数字列或计算列的最大值

Sum

返回一个数字列或计算列总和

avg

返回一个数字列或计算列的平均值

3、  avg(平均值)和sum(合计)函数

案例:SQL> select avg(sal),sum(sal) from emp;

4、  min(最小值)和max(最大值)函数

案例:SQL> select min(sal),max(sal) from emp;

5、  count(计数)函数

案例:SQL> select count(ename) from emp;

6、  distenct关键字:去掉重复的。

7、  分组数据: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;

8、  非法使用组函数

(1)       不能再where子句中使用组函数(注意!)

SQL> select deptno from emp where count(job)>0 group by deptno;

备注:ORA-00934: 此处不允许使用分组函数

(2)       可以在having子句中使用组函数

9、  过滤分组:having子句

使用having过滤分组:

(1)       行已经被分组

(2)       使用了组函数

(3)       满足having子句中条件的分组将被显示

AVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 子句和 SELECT 语句交互的方式类似。WHERE 子句搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中出现的任意项。

备注:having子句通常与group by子句结合使用

案例:

//查询部门的员工人数大于五部门编号

SQL> select deptno,count(*) from emp group by deptno having count(*)>5;

10、        嵌套函数

(1)函数可以嵌套。一个函数的输出可以是另一个函数的输入。操作数有一个可继承的执行过程。但函数的优先权只是基于位置,函数遵循由内到外,由左到右的原则.

(2)嵌套函数可以包括在组函数中嵌套单行函数,或者组函数嵌套入单行函数或组函数中

Oracle分组函数

Oracle分组函数
  • DEMAisSB
  • DEMAisSB
  • 2016年11月24日 15:11
  • 3481

分组函数group by和Oracle中分析函数partition by的用法以及区别

今天有个同事给我打电话问我题目列出的这个问题,在日常开发中,确实它们俩都是与分组有关的,但是需要注意的是一个是分组函数另一个是分析函数,讲解用到的表就以Oracle中schema的scott的EMP表...
  • yu102655
  • yu102655
  • 2016年08月30日 16:01
  • 11494

oracle数据库--关于使用分组函数以及group by的注意点

一 报错:不是单组分组函数 如果程序中使用了分组函数,则有两种情况可以使用: 1 程序中存在group by,并指定了分组条件,这样可以将分组条件一起查询出来 2 如果不使用分组的...
  • u012411414
  • u012411414
  • 2015年07月15日 01:42
  • 1353

oracle 统计函数及分组查询

1、统计函数 在之前学习过一个COUNT()函数,此函数的功能可以统计出表中的数据量,实际上这个就是一个统计函数,而常用的统计函数有如下几个: COUNT():查询表中的数据记录;AVG():...
  • icanlove
  • icanlove
  • 2014年11月11日 09:43
  • 4865

oracle分组汇总统计函数grouping

前两天同事问一个oracle使用grouping完成一个统计报表的功能,这个函数帅呆了。开发分组报表直接一个SQL就搞定。 grouping(columnA)函数的意思:当前行如果是由rollup汇总...
  • damenggege123
  • damenggege123
  • 2014年08月24日 10:49
  • 22361

oracle中分组排序函数用法

项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1、要求取出按field1分组后,并在每组中按照field2排序;2、亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示...
  • mss359681091
  • mss359681091
  • 2016年08月30日 17:08
  • 766

Oracle: 对数据分组(max,min,avg,sum等)的想法

1. 分组函数只能出现在选择列表(select),having,order by 子句中; 2.如果在select语句中同时包含有group by,having,order by,那么,他们的优先级是...
  • williamamg
  • williamamg
  • 2016年07月05日 13:25
  • 2404

NULL值的处理和逻辑操作||分组函数(从实践中学习Oracle SQL 第五章 第六章)

一、NULL的使用 1.一个表达式中包含任何NULL(空值),该表达式的值就为NULL 2.=null 和 !=null 都不可以,因为没办法证明NULLd等于某个值也不能证明NULL不等于某个值...
  • G1036583997
  • G1036583997
  • 2014年09月03日 10:59
  • 1112

Oracle高级查询--分组查询篇

什么是分组函数? 分组函数作用于一组数据,并对一组数据返回一个值。 常用的分组函数为AVG、SUM、MIN、MAX、COUNT、WM_CONCAT1.1 Oracle分组函数1使用AVG(平均值)...
  • SunMoonJP
  • SunMoonJP
  • 2017年01月24日 15:15
  • 2886

oracle 分组求和一个小例子

2015年4月9日 天气冷表gw_log设计如下:Name Type Nullable Default Comments ------------ ------...
  • u012814005
  • u012814005
  • 2015年04月09日 14:19
  • 3560
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle 分组函数介绍
举报原因:
原因补充:

(最多只允许输入30个字)