`

原创:oracle聚合函数介绍 <六>

阅读更多
    聚合函数对一组行中的某个列执行计算执行计算并返回单一的值。聚合函数忽略空值。聚合函数经常与 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
2
3
分享到:
评论
2 楼 sryijun 2014-10-08  
虽然简单,但也明了,辛苦了
1 楼 孔雀王子 2011-04-16  
写的好啊!^_^

相关推荐

    Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0问题解决 ojdbc包pom.xml出错

    Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0问题解决 ojdbc包pom.xml出错 &lt;!-- oracle数据库驱动 --&gt; &lt;dependency&gt;  &lt;groupId&gt;com.oracle&lt;/groupId&gt;  &lt;artifactId&gt;ojdbc6&lt;/artifactId&gt;  &lt;version&gt;...

    PHP教程

    &lt;br&gt;mSQL 数据库函数库 &lt;br&gt;SQL Server 数据库函数库 &lt;br&gt;MySQL 数据库函数库 &lt;br&gt;Sybase 数据库函数库 &lt;br&gt;网络函数库 &lt;br&gt;NIS 函数库 &lt;br&gt;ODBC 数据库链接函数库 &lt;br&gt;Oracle 8 数据库函数库 &lt;br&gt;Oracle 数据库函数...

    Oracle 9i Java程序设计——使用PL/SQL和Java的解决方案

    &lt;br&gt;原书名:Oracle 9i Java Programming&lt;br&gt;&lt;br&gt;Oracle 9i Java程序设计——使用PL/SQL和Java的解决方案 &lt;br&gt;&lt;br&gt;【原出版社】 Wrox Press &lt;br&gt;【作 者】Bjarki Holm,John Carnell等 &lt;br&gt;【译 者】 康博 &lt;br&gt;【丛 ...

    Oracle数据库Sql语句详解大全.pptx

    * 使用 NVL 函数处理空值:SELECT &lt; 列名 &gt; FROM &lt; 表名 &gt; WHERE &lt; 列名 &gt; = NVL(&lt; 列名 &gt;, &lt; 默认值 &gt;) * 使用字符串连接符连接列:SELECT &lt; 列名 1 &gt; || &lt; 列名 2 &gt; FROM &lt; 表名 &gt; 四、小结 * 本章总结了 SELECT...

    JBOSS数据库配置大全.pdf

    - OCI Thin Type 4: `jdbc:oracle:thin:@&lt;host&gt;:&lt;port&gt;:&lt;database&gt;` - OCI XA Type 2: `jdbc:oracle:thin:@&lt;host&gt;:&lt;port&gt;:&lt;database&gt;` - `&lt;host&gt;`: Oracle所在计算机的主机名。 - `&lt;port&gt;`: Oracle数据库的...

    ojdbc14.zip

    jdbc:oracle:thin:@&lt;host&gt;:&lt;port1521&gt;:&lt;全局数据库名&gt; 或 java:oracle:oci@&lt;本地服务名&gt; oracle的oci和thin连接的区别 1)从使用上来说,oci必须在客户机上安装oracle客户端或才能连接,而thin就不需要,因此从使用...

    struts_hibernate框架权限管理系统

    开发环境:&lt;br&gt;&lt;br&gt;Eclipse3.01+myeclipse3.84+mysql5.0(oracle、ms sqlserver2000)。&lt;br&gt;&lt;br&gt;压缩包里包含了所有的组件、源码和SQL脚本以及工程文件。&lt;br&gt;&lt;br&gt;这个系统也是花了点时间和精力才做好的,现在把源码给...

    Oracle 9i 纯粹实践入门由安装到编程全程图解附源码

    Oracle 9i 纯粹实践入门由安装到编程全程图解&lt;br&gt;安装调试环境: &lt;br&gt;&lt;br&gt;Oracle 版本: Oracle 9i 2.0.1.0&lt;br&gt;操作系统: Windows2003 server sp2 + IIS6.0&lt;br&gt;数据库连接类型为: 本地asp.net程序连接本地Oracle数据库...

    精通Oracle.10g.PLSQL编程

    使用LOB对象&lt;br&gt;16.1 LOB简介&lt;br&gt;16.2 DBMS LOB包&lt;br&gt;16.3 访问LOB&lt;br&gt;16.3.1 访问CLOB&lt;br&gt;16.3.2 访问BLOB&lt;br&gt;16.3.3 访问BFILE&lt;br&gt;16.4 习题&lt;br&gt;第17章 使用Oracle系统包&lt;br&gt;17.1 DBMS_OUTPUT&lt;br&gt;17.2...

    oracle9i绿色精减版

    Oracle 9i 客户端绿色版配置步骤&lt;br&gt;&lt;br&gt;1.解压 Oracle*_Base.rar 到指定目录,如 E:\Oracle&lt;br&gt;&lt;br&gt;2.将 oracle.reg 中的路径改为相应路径,完成后双击 oracle.reg ,导入注册信息到注册表&lt;br&gt; (用户路径中已经有...

    SQL语句自动生成工具

    无需安装和卸载 &lt;br&gt;支持几乎所有的SQL语法:&lt;br&gt;排序(Order By)&lt;br&gt;条件(Where)&lt;br&gt;分组(Group By)&lt;br&gt;分组条件(Having)&lt;br&gt;计算字段&lt;br&gt;SQL查询表&lt;br&gt;SQL查询子句&lt;br&gt;丰富的函数&lt;br&gt;表别名&lt;br&gt;字段别名(包括计算...

    SQL语句自动生成器简体中文版

    无需安装和卸载 &lt;br&gt;支持几乎所有的SQL语法:&lt;br&gt;排序(Order By)&lt;br&gt;条件(Where)&lt;br&gt;分组(Group By)&lt;br&gt;分组条件(Having)&lt;br&gt;计算字段&lt;br&gt;SQL查询表&lt;br&gt;SQL查询子句&lt;br&gt;丰富的函数&lt;br&gt;表别名&lt;br&gt;字段别名(包括计算...

    ojdbc8-19.3.0.0驱动包

    oracle-11g-ojdbc8-19.3.0.0驱动包 &lt;!-- oracle 驱动 --&gt; &lt;dependency&gt; &lt;groupId&gt;com.oracle.ojdbc&lt;/groupId&gt; &lt;artifactId&gt;ojdbc8&lt;/artifactId&gt; &lt;version&gt;19.3.0.0&lt;/version&gt; &lt;/dependency&gt;

    北大青鸟第二学年4.0 Y2所有资料 一

    北大青鸟第二学年4.0 Y2所有资料 一&lt;br&gt;&lt;br&gt;我已经把第二学年所有的课件打包在一起了,一共有5部分,这是第一部分&lt;br&gt;&lt;br&gt;大家下载时要记得评分,这样你们就不要资源分了&lt;br&gt;&lt;br&gt;Struts&& JSF&lt;br&gt;&lt;br&gt;Oracle&lt;br&gt;&lt;br&gt;...

    C#编程经验技巧宝典

    C#编程经验技巧宝典源代码,目录如下:&lt;br&gt;第1章 开发环境 1&lt;br&gt;&lt;br&gt;1.1 Visual Studio开发环境安装与配置 2&lt;br&gt;&lt;br&gt;0001 安装Visual Studio 2005开发环境须知 2&lt;br&gt;&lt;br&gt;0002 配置合适的Visual Studio 2005...

    ojdbc6.jar

    资源包xxxx.jar真实,自己按照下面模式: oracle6.jar, oracle7.jar, oracle8.jar, oracle10.jar,安装至Maven下, ojdbc6.jar仅为示例: &lt;dependency&gt; &lt;groupId&gt;com.oracle&lt;/groupId&gt; &lt;artifactId&gt;ojdbc6&lt;/...

    Oracle Data Provider for .NET (ODP.NET)

    &lt;br&gt; &lt;br&gt; 下载包括&lt;br&gt; &lt;br&gt; Oracle Developer Tools for Visual Studio .NET 2003 10.2.0.2.20 &lt;br&gt;&lt;br&gt; Oracle Developer Tools for Visual Studio 2005 10.2.0.2.20 &lt;br&gt;&lt;br&gt; Oracle Data Provider for .NET 1....

    oracle函数大全分析函数,聚合函数,转换函数,日期型函数,字符型函数,数值型函数,其他函数.docx

    Oracle 函数大全是对 Oracle 数据库中各种函数的总结和分类,包括分析函数、聚合函数、转换函数、日期型函数、字符型函数、数值型函数和其他函数等。 一、分析函数 Oracle 分析函数是 Oracle 数据库中的一种强大...

    oracle ojdbc8 ojdbc14 maven依赖

    Oracle Ojdbc8 和 Ojdbc14 是 Oracle 公司提供的两个不同版本的 JDBC 驱动,用于连接 Java 应用程序与 Oracle 数据库。在 Maven 工程中,正确配置这些依赖对于确保 Java 项目能够顺利连接并操作 Oracle 数据库至关...

    ORACLE函数介绍 全系列中文

    oracle函数介绍 8 综述 pdf"&gt;oracle函数介绍 1 著名函数之单值函数 pdf oracle函数介绍 2 非著名函数之单值函数 pdf oracle函数介绍 3 著名函数之聚合函数 pdf oracle函数介绍 4 非著名函数之聚合函数 pdf ...

Global site tag (gtag.js) - Google Analytics