聚合函数对一组行中的某个列执行计算执行计算并返回单一的值。聚合函数忽略空值。聚合函数经常与 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
分享到:
相关推荐
分析函数(OVER) <br>Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number) <br>Oracle开发专题之:分析函数3(Top/Bottom N、First/Last、NTile) <br>Oracle开发专题之:窗口函数 <br>Oracle开发专题之:...
<br>mSQL 数据库函数库 <br>SQL Server 数据库函数库 <br>MySQL 数据库函数库 <br>Sybase 数据库函数库 <br>网络函数库 <br>NIS 函数库 <br>ODBC 数据库链接函数库 <br>Oracle 8 数据库函数库 <br>Oracle 数据库函数...
运行方法<br>第七步:导入SQL文件,生成数据库<br>其他安装请见:<br>第一章Linux 下安装 JDK<br>第二章Linux 下安装 Tomcat5.5<br>第四章Linux 下安装 Oracle 10g<br>第五章Linux 下配置 CVS服务器<br>第六章Linux ...
<br>原书名:Oracle 9i Java Programming<br><br>Oracle 9i Java程序设计——使用PL/SQL和Java的解决方案 <br><br>【原出版社】 Wrox Press <br>【作 者】Bjarki Holm,John Carnell等 <br>【译 者】 康博 <br>【丛 ...
Oracle 主要配置文件介绍:<br>profile文件,oratab 文件,数据库实例初始化文件 initSID.ora,监听配置文件, sqlnet.ora 文件,tnsnames.ora 文件<br><br>1.2 Oracle 主要配置文件介绍<br>1.2.1 /etc/profile 文件...
Oracle9i AIX5L上的安装、建库与升级笔记<br>内容如下:<br>1、 用root用户完成下面的操 <br><br>添加oracle用户和组: <br><br> 你可以使用命令或smit 来完成,我一般都是只创建dba组。 <br><br>创建相关目录,并...
代码名称:Mapx4+vb 6.0实现功能全面的例子 —代码部分<br>作者/收集者:jemen <br><br>开发环境:VB + MapX<br><br>代码介绍:<br><br>下载完成的工程项目文件以及运行所需要的DEMO数据,这是一个实现功能非常完整...
jdbc:oracle:thin:@<host>:<port1521>:<全局数据库名> 或 java:oracle:oci@<本地服务名> oracle的oci和thin连接的区别 1)从使用上来说,oci必须在客户机上安装oracle客户端或才能连接,而thin就不需要,因此从使用...
NULL 博文链接:https://redarmychen.iteye.com/blog/1001979
开发环境:<br><br>Eclipse3.01+myeclipse3.84+mysql5.0(oracle、ms sqlserver2000)。<br><br>压缩包里包含了所有的组件、源码和SQL脚本以及工程文件。<br><br>这个系统也是花了点时间和精力才做好的,现在把源码给...
<br>OCP:Oracle 10g Administration II Study Guide<br><br>中文译名:<br>OCP:Oracle 10g管理II学习指南(1Z0-043) <br><br><br>【原出版社】 Sybex <br>【作 者】(美)Doug Stuns,Tim Buterbaugh,Bob Bryla <br>...
Oracle 9i 纯粹实践入门由安装到编程全程图解<br>安装调试环境: <br><br>Oracle 版本: Oracle 9i 2.0.1.0<br>操作系统: Windows2003 server sp2 + IIS6.0<br>数据库连接类型为: 本地asp.net程序连接本地Oracle数据库...
使用LOB对象<br>16.1 LOB简介<br>16.2 DBMS LOB包<br>16.3 访问LOB<br>16.3.1 访问CLOB<br>16.3.2 访问BLOB<br>16.3.3 访问BFILE<br>16.4 习题<br>第17章 使用Oracle系统包<br>17.1 DBMS_OUTPUT<br>17.2...
Oracle 9i 客户端绿色版配置步骤<br><br>1.解压 Oracle*_Base.rar 到指定目录,如 E:\Oracle<br><br>2.将 oracle.reg 中的路径改为相应路径,完成后双击 oracle.reg ,导入注册信息到注册表<br> (用户路径中已经有...
Oracle聚合函数Oracle聚合函数Oracle聚合函数
Wrox 红皮书<br><br>ISBN: 978-0-7645-7482-5<br><br>源代码下载:<br>http://media.wiley.com/product_ancillary/25/07645748/DOWNLOAD/574825_code.zip<br><br><br><br>One of the only Oracle books to focus ...
DB2 173<br>6.3.1 进行安装 174<br>6.3.2 检验安装 180<br>6.4 配置Control Center 182<br>6.5 安装DB2客户机 184<br>6.6 配置DB2客户机与DB2服务器通信 188<br>6.7 小结 194<br>6.8 常见问答 195<br>第7章 在Linux...
无需安装和卸载 <br>支持几乎所有的SQL语法:<br>排序(Order By)<br>条件(Where)<br>分组(Group By)<br>分组条件(Having)<br>计算字段<br>SQL查询表<br>SQL查询子句<br>丰富的函数<br>表别名<br>字段别名(包括计算...
无需安装和卸载 <br>支持几乎所有的SQL语法:<br>排序(Order By)<br>条件(Where)<br>分组(Group By)<br>分组条件(Having)<br>计算字段<br>SQL查询表<br>SQL查询子句<br>丰富的函数<br>表别名<br>字段别名(包括计算...