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

组函数类型

  • AVG
  • COUNT
  • MAX
  • MIN
  • STDDEV
  • SUM

组函数语法

  1. SELECT [column,] group_function(column), ...
  2. FROM table
  3. [WHERE condition]
  4. [GROUP BY column]
  5. [ORDER BY column];

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

  • 可以对数值型数据使用AVG 和 SUM 函数。
  1. SELECT
  2. AVG(salary),
  3. MAX(salary),
  4. MIN(salary),
  5. SUM(salary)
  6. FROM
  7. employees
  8. WHERE
  9. job_id LIKE '%REP%';

COUNT(计数)函数

  • COUNT(*) 返回表中记录总数,适用于任意数据类型。
  1. SELECT
  2. COUNT(*)
  3. FROM
  4. employees
  5. WHERE
  6. department_id = 50;

  • COUNT(expr) 返回expr不为空的记录总数。
  1. SELECT
  2. COUNT(commission_pct)
  3. FROM
  4. employees
  5. WHERE
  6. department_id = 50;

组函数与空值

  • 组函数忽略空值。

示例:

  1. SELECT
  2. AVG(commission_pct)
  3. FROM
  4. employees;

示例

  1. SELECT
  2. AVG(commission_pct),
  3. SUM(commission_pct) / 107,
  4. SUM(commission_pct) / COUNT(commission_pct)
  5. FROM
  6. employees

在组函数中使用NVL函数

NVL函数使分组函数无法忽略空值。

  1. SELECT
  2. AVG(nvl(commission_pct,0) )
  3. FROM
  4. employees;

DISTINCT 关键字

  • COUNT(DISTINCT expr)返回expr非空且不重复的记录总数
  1. SELECT
  2. COUNT(DISTINCT department_id)
  3. FROM
  4. employees;

分组数据

  • 可以使用GROUP BY子句将表中的数据分成若干组
  1. SELECT column, group_function(column)
  2. FROM table
  3. [WHERE condition]
  4. [GROUP BY group_by_expression]
  5. [ORDER BY column];
  • 明确:WHERE一定放在FROM后面

GROUP BY 子句

  • 在SELECT 列表中所有未包含在组函数中的列都应该包含在 GROUP BY 子句中。
  1. SELECT
  2. department_id,
  3. AVG(salary)
  4. FROM
  5. employees
  6. GROUP BY
  7. department_id;

  • 包含在 GROUP BY 子句中的列不必包含在SELECT 列表中
  1. SELECT
  2. AVG(salary)
  3. FROM
  4. employees
  5. GROUP BY
  6. department_id;

在GROUP BY子句中包含多个列
示例

  1. SELECT
  2. department_id dept_id,
  3. job_id,
  4. SUM(salary)
  5. FROM
  6. employees
  7. GROUP BY
  8. department_id,
  9. job_id;

非法使用组函数

  • 所有包含于SELECT 列表中,而未包含于组函数中的列都必须包含于 GROUP BY 子句中。
  1. SELECT department_id, COUNT(last_name)
  2. FROM employees;
  3. SELECT department_id, COUNT(last_name)
  4. GROUP BY 子句中缺少列
  • 不能在 WHERE 子句中使用组函数。
  • 可以在 HAVING 子句中使用组函数。
  1. SELECT
  2. department_id,
  3. AVG(salary)
  4. FROM
  5. employees
  6. WHERE
  7. AVG(salary) > 8000
  8. GROUP BY
  9. department_id;
  10.  
  11. WHERE 子句中不能使用组函数

过滤分组: HAVING 子句

使用 HAVING 过滤分组:

  • 行已经被分组。
  • 使用了组函数。
  • 满足HAVING 子句中条件的分组将被显示。
  1. SELECT column, group_function
  2. FROM table
  3. [WHERE condition]
  4. [GROUP BY group_by_expression]
  5. [HAVING group_condition]
  6. [ORDER BY column];

示例

  1. SELECT
  2. department_id,
  3. MAX(salary)
  4. FROM
  5. employees
  6. GROUP BY
  7. department_id
  8. HAVING
  9. MAX(salary) > 10000;

嵌套组函数

例如:显示各部门平均工资的最大值

  1. SELECT
  2. MAX(AVG(salary) )
  3. FROM
  4. employees
  5. GROUP BY
  6. department_id;

Oracle系列六 分组函数的更多相关文章

  1. Oracle - 查询语句 - 分组函数

    /* 分组函数 不能再select子句中出现普通的列,除非这个列在group by中给出 所有的空值都会被分为一组 分组过滤 SELECT FROM WHERE GROUPBY HAVING ORDE ...

  2. Oracle系列四 单行函数查询语句

    单行函数 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以转换数据类型 可以嵌套 参数可以是一列或一个值 包含:字符,数值,日期,转换,通用 字符函数 1.大小写控制函数: ...

  3. PLSQL_基础系列02_分组函数GROUP BY / ROLLUP / CUBE(案例)

    2014-11-30 Created By BaoXinjian

  4. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

        花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...

  5. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

    花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用oracle用 ...

  6. Oracle索引梳理系列(六)- Oracle索引种类之函数索引

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  7. [转]详解Oracle高级分组函数(ROLLUP, CUBE, GROUPING SETS)

    原文地址:http://blog.csdn.net/u014558001/article/details/42387929 本文主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用 ...

  8. .Net程序员学用Oracle系列(7):视图、函数、过程、包

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.视图 1.1.创建视图 2.函数 2.1.创建函数 2.2.调用函数 3.过程 3.1.创建过程 3.2.调用过程 4.包 ...

  9. .Net程序员学用Oracle系列(9):系统函数(上)

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.字符函数 1.1.字符函数简介 1.2.语法说明及案例 2.数字函数 2.1.数字函数简介 2.2.语法说明及案例 3.日期 ...

随机推荐

  1. Oracle 12cR1 RAC集群安装(二)--使用图形界面安装

    Oracle 12cR1 RAC集群安装文档:Oracle 12cR1 RAC集群安装(一)--环境准备Oracle 12cR1 RAC集群安装(二)--使用图形界面安装Oracle 12cR1 RA ...

  2. src挖掘过程之信息收集

    信息收集 1.厂商域名   2.厂商ip段   3.厂商业务信息 域名收集 1.基于SSL证书查询   2.第三方网站接口查询   3.Github   4.DNS解析记录   5.子域名枚举等 基于 ...

  3. 快捷定位目录 z武器

    z的源码在这里:https://github.com/rupa/z/blob/master/z.sh 1.把源码复制到你的用户目录下的z.sh文件, 2.然后用vim打开.bashrc这个目录,在最后 ...

  4. Linux的rwx

  5. python+正则+多进程爬取糗事百科图片

    话不多说,直接上代码: # 需要的库 import requests import re import os from multiprocessing import Pool # 请求头 header ...

  6. Kotlin中Range与异常体系剖析

    好用的集合扩展方法: 下面来看一下对于集合中好用的一些扩展方法,直接上代码: 如果我们想取出集合中的第一个值和最后一个值,用Java方式是get(0)和get(size-1),但是在Kotlin中提供 ...

  7. springboot+Mybatis+MySql 一个update标签中执行多条update sql语句

    Mysql是不支持这种骚操作的,但是不代表并不能实现,只需要在jdbc配置文件中稍微做一下修改就行. driver=com.mysql.jdbc.Driver url=jdbc:mysql://127 ...

  8. ajax、axios、fetch 对比

    前言 今天在看到一个比较好的插件,写一个示例时,由于需要请求在线数据,官方给的是用 $.get(),就为了一个示例使用 JQuery 没必要. 又找了找,发现有用 fecth 的,挺方便,这里就做一个 ...

  9. Import declarations are not supported by current JavaScript version

    原因为:不支持当前的js版本,在perference中进行设置javascript的版本即可 注意:在perference中进行更改,而不是defeaut perference,快捷键操作为:comm ...

  10. Asia Jakarta Regional Contest 2019 I - Mission Possible

    cf的地址 因为校强, "咕咕十段"队获得了EC-final的参赛资格 因为我弱, "咕咕十段"队现在银面很大 于是咕咕十段决定进行训练. 周末vp了一场, 这 ...