Oracle系列六 分组函数
- 分组函数作用于一组数据,并对一组数据返回一个值。
组函数类型
- AVG
- COUNT
- MAX
- MIN
- STDDEV
- SUM
组函数语法
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%';

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;

示例
SELECT
AVG(commission_pct),
SUM(commission_pct) / 107,
SUM(commission_pct) / COUNT(commission_pct)
FROM
employees

在组函数中使用NVL函数
NVL函数使分组函数无法忽略空值。
SELECT
AVG(nvl(commission_pct,0) )
FROM
employees;

DISTINCT 关键字
- COUNT(DISTINCT expr)返回expr非空且不重复的记录总数
SELECT
COUNT(DISTINCT department_id)
FROM
employees;

分组数据
- 可以使用GROUP BY子句将表中的数据分成若干组
SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
- 明确:WHERE一定放在FROM后面
GROUP BY 子句
- 在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;

在GROUP BY子句中包含多个列
示例
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;
SELECT department_id, COUNT(last_name)
GROUP BY 子句中缺少列
- 不能在 WHERE 子句中使用组函数。
- 可以在 HAVING 子句中使用组函数。
SELECT
department_id,
AVG(salary)
FROM
employees
WHERE
AVG(salary) > 8000
GROUP BY
department_id; WHERE 子句中不能使用组函数
过滤分组: HAVING 子句
使用 HAVING 过滤分组:
- 行已经被分组。
- 使用了组函数。
- 满足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;

Oracle系列六 分组函数的更多相关文章
- Oracle - 查询语句 - 分组函数
/* 分组函数 不能再select子句中出现普通的列,除非这个列在group by中给出 所有的空值都会被分为一组 分组过滤 SELECT FROM WHERE GROUPBY HAVING ORDE ...
- Oracle系列四 单行函数查询语句
单行函数 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以转换数据类型 可以嵌套 参数可以是一列或一个值 包含:字符,数值,日期,转换,通用 字符函数 1.大小写控制函数: ...
- PLSQL_基础系列02_分组函数GROUP BY / ROLLUP / CUBE(案例)
2014-11-30 Created By BaoXinjian
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用oracle用 ...
- Oracle索引梳理系列(六)- Oracle索引种类之函数索引
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- [转]详解Oracle高级分组函数(ROLLUP, CUBE, GROUPING SETS)
原文地址:http://blog.csdn.net/u014558001/article/details/42387929 本文主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用 ...
- .Net程序员学用Oracle系列(7):视图、函数、过程、包
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.视图 1.1.创建视图 2.函数 2.1.创建函数 2.2.调用函数 3.过程 3.1.创建过程 3.2.调用过程 4.包 ...
- .Net程序员学用Oracle系列(9):系统函数(上)
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.字符函数 1.1.字符函数简介 1.2.语法说明及案例 2.数字函数 2.1.数字函数简介 2.2.语法说明及案例 3.日期 ...
随机推荐
- Python爬取mn52网站美女图片以及图片防盗链的解决方法
防盗链原理 http标准协议中有专门的字段记录referer 一来可以追溯上一个入站地址是什么 二来对于资源文件,可以跟踪到包含显示他的网页地址是什么 因此所有防盗链方法都是基于这个Referer字段 ...
- Codeforces I. Vessels(跳转标记)
题目描述: Vessels time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- python代码安全扫描工具
python代码安全扫描工具:Coverity. Fortify.SecMissile(漏扫,对源代码提供基于语义的搜索和分析能力,实现已知安全漏洞的快速扫描)
- Alpha冲刺(7/10)——2019.4.30
所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(7/10)--2019.4.30 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...
- windows——快速得到某一目录下所有文件的名称
前言 其实用的是windows上dir命令,能快速得到某一目录下的所有文件名称,天天那么忙都没时间写博客(┬_┬) 步骤 打开cmd并cd到某目录下 C:\Users\Administrator.KI ...
- 微软安全技术Shim
Shim是微软系统中一个小型函数库,用于透明地拦截API调用,修改传递的参数.自身处理操作.或把操作重定向到其他地方.Shim主要用于解决遗留应用程序在新版Windows系统上的兼容性问题,但Shim ...
- 3-微信小程序开发(小程序的目录结构说明)
https://www.cnblogs.com/yangfengwu/p/10050784.html 源码下载链接: 或者 这节先说一下小程序的目录结构 自行根据 https://www.cnblo ...
- Android Studio一直显示Building“project name”Gradle project info问题详解
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 Android Studio一直显示 Building&quo ...
- 博客之旅的开始-----什么是Python ? ? ?
1 .到底什么是Python?你可以在回答中与其他技术进行对比(也鼓励这样做). 答案下面是一些关键点: Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,Python代码在运行之前 ...
- 计蒜客——Reversion Count
Reversion Count 解析:题目数字的长度最大为 99,因此使用字符串处理,那么必然这些数存在某些规律.对于数 a (XYZW) 和数 b (WZYX),原式 = (1000X + 100Y ...