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

组函数类型

  • 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系列六 分组函数的更多相关文章

  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. 【笔记】Reptile-一阶元学习算法

    目录 论文信息 Nichol A , Achiam J , Schulman J . On First-Order Meta-Learning Algorithms[J]. 2018. 一.摘要 本文 ...

  2. Cloudera Certified Associate Administrator案例之Manage篇

    Cloudera Certified Associate Administrator案例之Manage篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.下载Namenode镜像 ...

  3. 如何在Jenkins中使用日期参数(变量)

    一.首先需要安装插件:Date Parameter Plugin 二.安装完成后,在项目中添加参数,我这里只有日期,时间的话没试过,应该也可以把 三.用${date}调用参数即可 最后邮件的附件正常~

  4. 性能测试基础---URL和HTTP协议

    ·URL和HTTP协议: ·URL构成: URL是web应用进行资源访问的主要方式.一般来说,由五个部分构成: 示例:http://192.168.2.212/phpwind1/searcher.ph ...

  5. lca:异象石(set+dfs序)

    题目:https://loj.ac/problem/10132 #include<bits/stdc++.h> using namespace std; ,N,k=,head[]; str ...

  6. fastjson异常(字符串集合转成字符串数组)

    我是在项目中,因为受到一个string类型的list集合,然后需要把这个字符串发送给前端,进行解析. 但是前端收到的是一个字符串,不能进行解析. 所以采用 ArrayUtils.clone(JSONO ...

  7. delete properties inside object

  8. Dynamics 365 安装问题——无法访MSCRM_CONFIG数据库

    1.  问题 2.  原因 出现此问题的一个或多个下列条件都为真︰ 在多务器中安装 Microsoft Dynamics 365.然后,直接在运行 Microsoft SQL Server 的服务器上 ...

  9. SQL操作Spark SQL--BasicSQLTestt

    object BasicSQLTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .a ...

  10. Java 15周作业

    题目1:编写一个应用程序,输入用户名和密码,访问test数据库中t_login表(字段包括id.username.password),验证登录是否成功. 题目2:在上一题基础上,当登录成功后,将t_u ...