分组函数

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

Oracle中分组函数的种类:

- 求平均值 AVG

- 计数记录数 COUNT

- 求最大值 MAX

- 求最小值 MIN

- 求和 SUM

- 求标准差? STDDEV

分组函数的语法公式:

SELECT    [column,] group_function(column), ...
FROM table
[WHERE condition]
[GROUP BY column]
[ORDER BY column];

AVG(平均值)和 SUM (合计)函数

对数值型数据使用AVG 和 SUM 函数。

SELECT
AVG(salary), MAX(salary),
MIN(salary), SUM(salary)
FROM
employees
WHERE
job_id LIKE '%REP%';

MIN(最小值)和 MAX(最大值)函数

对任意数据类型的数据使用 MIN 和 MAX 函数。

SELECT 
  MIN(hire_date), MAX(hire_date)
FROM
  employees;

COUNT(计数)函数

COUNT(*) 返回表中记录总数,适用于任意数据类型。

SELECT COUNT(*)
FROM employees
WHERE department_id = 50;

COUNT(expr) 返回expr不为空的记录总数。

SELECT COUNT(commission_pct)
FROM employees
WHERE department_id = 50;

分组函数与空值

所有的分组函数都是忽略空值进行计算的

SELECT AVG(commission_pct)
FROM employees;

使用NVL函数去设置空值,可以被分组函数计算

SELECT AVG(NVL(commission_pct, 0))
FROM employees;

COUNT结合DISTINCT排除重复的计数

COUNT(DISTINCT expr)返回expr非空且不重复的记录总数

SELECT COUNT(DISTINCT department_id)
FROM employees;

分组函数: GROUP BY

求出EMPLOYEES表中各部门的平均工资

语法公式:

可以使用GROUP BY子句将表中的数据分成若干组

SELECT    column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];

【明确:WHERE一定放在FROM后面】

在SELECT 列表中所有未包含在组函数中的列都应该包含 在 GROUP BY 子句中。

SELECT   department_id, AVG(salary)
FROM employees
GROUP BY department_id ;

包含在 GROUP BY 子句中的列不必包含在SELECT 列表中

SELECT   AVG(salary)
FROM employees
GROUP BY department_id ;

对多个列进行分组

SELECT   department_id dept_id, job_id, SUM(salary)
FROM employees
GROUP BY department_id, job_id ;

非法使用组函数

所有包含于SELECT 列表中,而未包含于组函数中的列都 必须包含于 GROUP BY 子句中。

SELECT department_id, COUNT(last_name)
FROM employees;

错误警告:

GROUP BY 子句中缺少列

ERROR at line 1:
ORA-00937: not a single-group group function

不能在 WHERE 子句中使用组函数。

可以在 HAVING 子句中使用组函数。

SELECT   department_id, AVG(salary)
FROM employees
WHERE AVG(salary) > 8000
GROUP BY department_id;

错误警告:

WHERE 子句中不能使用组函数

ERROR at line 3:
ORA-00934: group function is not allowed here

练习:

部门最高工资比 10000 高的部门

过滤分组: HAVING 子句

使用 HAVING 过滤分组:

1. 行已经被分组。

2. 使用了组函数。

3. 满足HAVING 子句中条件的分组将被显示。

语法公式:

SELECT    column, group_function
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];

案例:

SELECT   department_id, MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary)>10000 ;

嵌套分组函数

查询各部门平均工资的最大值

SELECT   MAX(AVG(salary))
FROM employees
GROUP BY department_id;

【OracleDB】 07 分组查询 & 分组函数的更多相关文章

  1. SQL Server数据库————连接查询和分组查询

    SQL Server数据库————连接查询和分组查询 分组查询 select 列from  <表名> where  …… group by  列 注意:跟order  by一样group ...

  2. Django聚合分组查询、常用字段

    首先回顾sql中聚合和分组的概念: 如果没有分组,会把整张表作为一个大组,查询字段必须是聚合结果:如果有分组,分组之后,必须要使用聚合的结果作为having的条件. 聚合查询 聚合:aggregate ...

  3. MongoDB之 分组查询

    分组查询 可视化工具 https://robomongo.org pymongo from pymongo import MongoClient # 方式一: c = MongoClient(host ...

  4. Django-model聚合查询与分组查询

    Django-model聚合查询与分组查询 聚合函数包含:SUM AVG MIN MAX COUNT 聚合函数可以单独使用,不一定要和分组配合使用:不过聚合函数一般和group by 搭配使用 agg ...

  5. python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)

    昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...

  6. (转)python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)

    昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...

  7. Django的mode的分组查询和聚合查询和F查询和Q查询

    1.聚合查询 # 聚合函数aggregate,求指定字段的最大值,最小值,平均值,和的值,方法如下 from django.db.models import Avg from django.db.mo ...

  8. Django基础(5) ----基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询

    一.基于双下划线的跨表查询 Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系.要做跨关系查询,就使用两个下划线来链接模型(mode ...

  9. group by分组查询

    有如下数据: 一个简单的分组查询的案例 按照部门编号deptno分组,统计每个部门的平均工资. select deptno,avg(sal) avgs from emp group by deptno ...

  10. Django学习——分组查询、图书管理系统项目、wsgi, uwsgi, cgi, fastcgi

    1 分组查询 # 分组查询 # 查询每一个出版社id,以及图书平均价格(单表) # 原生sql # select publish_id,avg(price) from app01_book group ...

随机推荐

  1. SCOI 回旋退役记

    02.21 day -2 开始写了,期望这不是真的退役记吧.但是不是的概率好小-- 这几天一直考试,怎么说呢,到差不差的,也就那个样子. 归根结底,菜是原罪,和那些大佬相比我真的很很很菜啊.当时看 c ...

  2. 算法金 | AI 基石,无处不在的朴素贝叶斯算法

    大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 历史上,许多杰出人才在他们有生之年默默无闻, 却在逝世后被人们广泛追忆和崇拜. 18世 ...

  3. HP惠普战66电源黄灯闪烁无法充电

    HP惠普战66电源黄灯闪烁无法充电 TYPE-C PD 无法充电. 解决办法:关机状态下,拔除外部设备,长按电源键30秒以释放主板静电,再插电源线可以开机.

  4. work09

    day10作业: 第一题: 定义一个接口Animal,包含: 1.抽象方法: run() 2.默认方法: breathe(),输出"动物会呼吸",同时调用静态方法 eat(),私有 ...

  5. OFBiz RCE漏洞复现(CVE-2023-51467)

    漏洞名称 Apache OFBiz 鉴权绕过导致命令执行 漏洞描述 Apache OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构 ...

  6. python webdriver.remote远程创建火狐浏览器会话报错,Unable to create new service: GeckoDriverService

    问题: 使用selenium.webdriver.remote,远程指定地址的浏览器,并创建会话对象:创建火狐浏览器会话时,报错,错误信息如下: Message: Unable to create n ...

  7. 在Xcode编写我们的quick help

    程序环境 Xcode 13.2.1 "写代码要经常写注释."虽然很多人不以为然,但是在使用Xcode的时候,我们在写注释的时候稍微注意一下格式的话,Xcode会给我们带来额外的正反 ...

  8. HarmonyOS SDK助力鸿蒙原生应用“易感知、易理解、易操作”

    6月21-23日,华为开发者大会(HDC 2024)盛大开幕.6月23日上午,<HarmonyOS开放能力,使能应用原生易用体验>分论坛成功举办,大会邀请了多位华为技术专家深度解读如何通过 ...

  9. hive第一课:Hive3.1.2概述与基本操作

    Hive3.1.2概述与基本操作 1.Hive基本概念 1.1 Hive简介 Hive本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据存储,说白了hive可以理解为一个将 ...

  10. 流程图渲染方式:Canvas vs SVG

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:霁明 背景 我们产品中会有一些流程图应用,例如审批中心的审 ...