一,什么是分组函数
分组函数作用于一组数据,并对一组数据返回一个值
二,分组函数类型
Avg ,count,max,min,stddev(标准方差),sum。
函数名称
函数描述
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子句。不管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;
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;
- 大小: 44.2 KB
分享到:
相关推荐
李兴华老师的ORACLE数据库课程中,对分组统计和子查询进行了深入详解。本课程涵盖了分组统计的重点和难点、子查询的概念和应用场景,以及在实际开发中需要注意的细节。 分组统计 在SQL中,分组统计是对数据进行...
#### 一、Oracle分组排序和统计概述 在Oracle数据库中,实现分组排序和统计是一项常见的需求,主要用于处理大量的数据,并从中提取有价值的信息。通过合理运用SQL语句,特别是`GROUP BY`、`ORDER BY`以及分析函数等...
### Oracle数据库分组查询知识点详解 #### 1. 查询部门20的员工,每个月的工资总和及平均工资 - **SQL语句**: ```sql SELECT SUM(sal) AS 总工资, AVG(sal) AS 平均工资 FROM emp WHERE deptno = 20; ``` - **...
笔记中详细讲解了SQL的SELECT语句,包括如何选择字段、如何进行条件过滤、如何排序和分组数据,以及更复杂的联接操作和子查询。此外,还有关于DML语句(INSERT、UPDATE、DELETE)和DDL语句(CREATE、ALTER、DROP)的...
分析函数(Analytic Functions)是Oracle SQL中的高级特性,它们在数据集上执行计算,并返回基于分组或排序的数据结果。与聚合函数(如SUM, AVG, COUNT等)不同,分析函数可以在每个行级别上返回结果,而不只是返回...
### Oracle 分组函数详解 #### 一、章节目标与内容概览 在Oracle数据库中,分组函数(也称为聚合函数)是一种强大的工具,用于处理数据集并从中提取有用的信息。通过本章节的学习,读者将能够理解单行函数与分组...
它们提供了一种更高效、更灵活的方式来执行诸如累计计算、分组内的百分比计算、前N条查询以及移动平均等操作,相比传统的PL/SQL解决方案,分析函数在性能上有显著优势。 分析函数的工作原理是基于一组行来计算聚合...
### Oracle实战详解 #### Oracle数据库系统概述 Oracle数据库系统是由美国Oracle公司提供的,以其核心的分布式数据库技术闻名,是市场上非常流行的客户/服务器(CLIENT/SERVER)架构或B/S架构的数据库之一。Oracle...
Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的SQL支持使得数据管理、查询和分析变得高效。本手册将深入探讨Oracle SQL的用法,包括各种函数的使用、数据类型的转换以及查询语句的语法。 首先,Oracle...
在Oracle数据库中,`GROUP BY`子句是一个关键的SQL元素,它允许用户根据一个或多个列的值将数据分组,以便对每个组进行聚合计算。以下是对`GROUP BY`用法的详细解释和规则: 1. **基本用法**: `GROUP BY`子句通常...
使用Group By对查询数据分组 使用HAVING子句对分组后的数据进行过滤 第六章 子查询 第七章 数据建模及数据库设计 了解系统开发的步骤 数据关系的定义 理解实体关系映射图(E-R图) 第八章 创建表 掌握创建表的...
以下是对"Oracle常用命令详解"文档中可能包含的一些关键知识点的详细介绍: 1. **SQL*Plus命令**: - `SELECT`:用于从表中查询数据,是最基础的SQL命令。 - `INSERT`:用于向表中插入新的记录。 - `UPDATE`:...
以下是一些关于"Oracle常用查询"的知识点详解: 1. **SQL语言基础**:Oracle查询主要依赖SQL(结构化查询语言),包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY等基本语句。学习SQL的基本语法是查询的基础...
Padding Oracle Attack 详解 Padding Oracle Attack 是一种加密攻击方式,主要针对使用CBC模式的分组密码加密算法。这种攻击方式利用应用程序对异常的处理,来猜解出密文对应的明文。 背景知识 在加密过程中,...
首先,我们引领您进入Oracle的入门领域,随后将探索查询的基础和单行、分组函数的运用。 多表查询、子查询、高级查询等复杂技巧,将助您在数据处理中游刃有余。接着,我们将带您了解Oracle的数据字典和数据类型,为...
本资料“Oracle语法详解1.rar”旨在深入解析Oracle数据库的语法基础,帮助用户掌握基本的SQL查询操作。以下是针对压缩包内三个文件的详细知识点: 1. **简单查询语句-cl.avi**: 这个视频文件可能包含的是关于...
Oracle 视图详解 Oracle 视图(View)是一种逻辑表,基于一个或多个实际表,它不占用物理空间,只存在逻辑定义。每次使用视图时,都是重新执行 SQL 语句。视图可以从一个或多个实际表中获得,这些表的数据存放在...
Oracle分析函数是数据库管理系统Oracle中的一种高级查询工具,主要用于处理多行数据并返回与每一行相关的聚合信息。这些函数在在线分析处理(OLAP)环境中特别有用,因为它们能够对数据进行复杂的分析,例如计算累计...
本资料包“Oracle语法详解2.rar”包含了对Oracle数据库语法的深入解析,旨在帮助学习者更好地理解和应用Oracle SQL。 首先,我们来看“限定查询和排序-cl.avi”这个视频文件。在Oracle SQL中,查询数据并进行排序是...