`

Oracle 分组查询详解

阅读更多


一,什么是分组函数

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

二,分组函数类型

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
分享到:
评论

相关推荐

    SQL之分组统计和子查询专题

    李兴华老师的ORACLE数据库课程中,对分组统计和子查询进行了深入详解。本课程涵盖了分组统计的重点和难点、子查询的概念和应用场景,以及在实际开发中需要注意的细节。 分组统计 在SQL中,分组统计是对数据进行...

    oracle分组排序统计高级用法

    #### 一、Oracle分组排序和统计概述 在Oracle数据库中,实现分组排序和统计是一项常见的需求,主要用于处理大量的数据,并从中提取有价值的信息。通过合理运用SQL语句,特别是`GROUP BY`、`ORDER BY`以及分析函数等...

    Oracle数据库分组查询练习题(包答案)

    ### Oracle数据库分组查询知识点详解 #### 1. 查询部门20的员工,每个月的工资总和及平均工资 - **SQL语句**: ```sql SELECT SUM(sal) AS 总工资, AVG(sal) AS 平均工资 FROM emp WHERE deptno = 20; ``` - **...

    Oracle 笔记 详解 资料 用例

    笔记中详细讲解了SQL的SELECT语句,包括如何选择字段、如何进行条件过滤、如何排序和分组数据,以及更复杂的联接操作和子查询。此外,还有关于DML语句(INSERT、UPDATE、DELETE)和DDL语句(CREATE、ALTER、DROP)的...

    Oracle中的分析函数详解

    分析函数(Analytic Functions)是Oracle SQL中的高级特性,它们在数据集上执行计算,并返回基于分组或排序的数据结果。与聚合函数(如SUM, AVG, COUNT等)不同,分析函数可以在每个行级别上返回结果,而不只是返回...

    oracle分组函数

    ### Oracle 分组函数详解 #### 一、章节目标与内容概览 在Oracle数据库中,分组函数(也称为聚合函数)是一种强大的工具,用于处理数据集并从中提取有用的信息。通过本章节的学习,读者将能够理解单行函数与分组...

    ORACLE分析函数详解

    它们提供了一种更高效、更灵活的方式来执行诸如累计计算、分组内的百分比计算、前N条查询以及移动平均等操作,相比传统的PL/SQL解决方案,分析函数在性能上有显著优势。 分析函数的工作原理是基于一组行来计算聚合...

    oracle实战详解

    ### Oracle实战详解 #### Oracle数据库系统概述 Oracle数据库系统是由美国Oracle公司提供的,以其核心的分布式数据库技术闻名,是市场上非常流行的客户/服务器(CLIENT/SERVER)架构或B/S架构的数据库之一。Oracle...

    oracle手册,详解SQL用法

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的SQL支持使得数据管理、查询和分析变得高效。本手册将深入探讨Oracle SQL的用法,包括各种函数的使用、数据类型的转换以及查询语句的语法。 首先,Oracle...

    Oracle中分组查询group by用法规则详解

    在Oracle数据库中,`GROUP BY`子句是一个关键的SQL元素,它允许用户根据一个或多个列的值将数据分组,以便对每个组进行聚合计算。以下是对`GROUP BY`用法的详细解释和规则: 1. **基本用法**: `GROUP BY`子句通常...

    Oracle数据库Sql语句详解大全

    使用Group By对查询数据分组 使用HAVING子句对分组后的数据进行过滤 第六章 子查询 第七章 数据建模及数据库设计 了解系统开发的步骤 数据关系的定义 理解实体关系映射图(E-R图) 第八章 创建表 掌握创建表的...

    oracle常用命令详解

    以下是对"Oracle常用命令详解"文档中可能包含的一些关键知识点的详细介绍: 1. **SQL*Plus命令**: - `SELECT`:用于从表中查询数据,是最基础的SQL命令。 - `INSERT`:用于向表中插入新的记录。 - `UPDATE`:...

    oracle常用查询

    以下是一些关于"Oracle常用查询"的知识点详解: 1. **SQL语言基础**:Oracle查询主要依赖SQL(结构化查询语言),包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY等基本语句。学习SQL的基本语法是查询的基础...

    Padding-Oracle-Attack详解[归纳].pdf

    Padding Oracle Attack 详解 Padding Oracle Attack 是一种加密攻击方式,主要针对使用CBC模式的分组密码加密算法。这种攻击方式利用应用程序对异常的处理,来猜解出密文对应的明文。 背景知识 在加密过程中,...

    深入解析ORACLE学习案例或ORACLE培训实战详解案例集

    首先,我们引领您进入Oracle的入门领域,随后将探索查询的基础和单行、分组函数的运用。 多表查询、子查询、高级查询等复杂技巧,将助您在数据处理中游刃有余。接着,我们将带您了解Oracle的数据字典和数据类型,为...

    Oracle语法详解1.rar

    本资料“Oracle语法详解1.rar”旨在深入解析Oracle数据库的语法基础,帮助用户掌握基本的SQL查询操作。以下是针对压缩包内三个文件的详细知识点: 1. **简单查询语句-cl.avi**: 这个视频文件可能包含的是关于...

    oracle视图详解

    Oracle 视图详解 Oracle 视图(View)是一种逻辑表,基于一个或多个实际表,它不占用物理空间,只存在逻辑定义。每次使用视图时,都是重新执行 SQL 语句。视图可以从一个或多个实际表中获得,这些表的数据存放在...

    Oracle分析函数详解.doc

    Oracle分析函数是数据库管理系统Oracle中的一种高级查询工具,主要用于处理多行数据并返回与每一行相关的聚合信息。这些函数在在线分析处理(OLAP)环境中特别有用,因为它们能够对数据进行复杂的分析,例如计算累计...

    Oracle语法详解2.rar

    本资料包“Oracle语法详解2.rar”包含了对Oracle数据库语法的深入解析,旨在帮助学习者更好地理解和应用Oracle SQL。 首先,我们来看“限定查询和排序-cl.avi”这个视频文件。在Oracle SQL中,查询数据并进行排序是...

Global site tag (gtag.js) - Google Analytics