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.日期 ...
随机推荐
- Oracle 12cR1 RAC集群安装(二)--使用图形界面安装
Oracle 12cR1 RAC集群安装文档:Oracle 12cR1 RAC集群安装(一)--环境准备Oracle 12cR1 RAC集群安装(二)--使用图形界面安装Oracle 12cR1 RA ...
- src挖掘过程之信息收集
信息收集 1.厂商域名 2.厂商ip段 3.厂商业务信息 域名收集 1.基于SSL证书查询 2.第三方网站接口查询 3.Github 4.DNS解析记录 5.子域名枚举等 基于 ...
- 快捷定位目录 z武器
z的源码在这里:https://github.com/rupa/z/blob/master/z.sh 1.把源码复制到你的用户目录下的z.sh文件, 2.然后用vim打开.bashrc这个目录,在最后 ...
- Linux的rwx
- python+正则+多进程爬取糗事百科图片
话不多说,直接上代码: # 需要的库 import requests import re import os from multiprocessing import Pool # 请求头 header ...
- Kotlin中Range与异常体系剖析
好用的集合扩展方法: 下面来看一下对于集合中好用的一些扩展方法,直接上代码: 如果我们想取出集合中的第一个值和最后一个值,用Java方式是get(0)和get(size-1),但是在Kotlin中提供 ...
- springboot+Mybatis+MySql 一个update标签中执行多条update sql语句
Mysql是不支持这种骚操作的,但是不代表并不能实现,只需要在jdbc配置文件中稍微做一下修改就行. driver=com.mysql.jdbc.Driver url=jdbc:mysql://127 ...
- ajax、axios、fetch 对比
前言 今天在看到一个比较好的插件,写一个示例时,由于需要请求在线数据,官方给的是用 $.get(),就为了一个示例使用 JQuery 没必要. 又找了找,发现有用 fecth 的,挺方便,这里就做一个 ...
- Import declarations are not supported by current JavaScript version
原因为:不支持当前的js版本,在perference中进行设置javascript的版本即可 注意:在perference中进行更改,而不是defeaut perference,快捷键操作为:comm ...
- Asia Jakarta Regional Contest 2019 I - Mission Possible
cf的地址 因为校强, "咕咕十段"队获得了EC-final的参赛资格 因为我弱, "咕咕十段"队现在银面很大 于是咕咕十段决定进行训练. 周末vp了一场, 这 ...