我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle专题6之Oracle的分组函数与数组分组

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle专题6之Oracle的分组函数与数组分组

  • 在关系数据库中,使用数据分组可以取得表数据的汇总信息。数据分组是通过分组函数、Group by以及having等子句共同实现的。

    1、分组函数

  • SQL函数包含单行函数和多行函数。分组函数属于多行函数。作用于一组数据,并对一组数据返回一个值。
  • 分组函数:SELECT [column,] group function(column) ... FROM table [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column];。
  • 常用的分组函数:AVG、SUM、MIN、MAX、COUNT、WM_CONCAT.。

    a、AVG()

  • 求平均值。举例:SELECT avg(sal) FROM emp;
    SQL> SELECT avg(sal) FROM emp;
        AVG(SAL)
                2135

    b、SUM()

  • 求和。举例:SELECT SUM(sal) FROM emp;
    SQL> SELECT MIN(sal) FROM emp;
        MIN(SAL)
                 800

    c、MIN

  • 求最小值。举例:SELECT MIN(sal) FROM emp;
    SQL> SELECT MIN(sal) FROM emp;
    MIN(SAL)
       800

d、COUNT()

  • 计数(统计)。举例:求员工的总人数,SELECT COUNT(*) FROM emp;
    SQL> SELECT COUNT(*) FROM emp;
    COUNT(*)-
        15
  • 在使用分组时可以使用DISTINCT关键字来去重。
    SQL> select count(distinct deptno) from emp;
    COUNT(DISTINCTDEPTNO)
                    3

    e、WM_CONCAT行转列(让查询结果行转列)

  • 该函数可以把列值以‘,’号分隔起来,并显示成一行。
    SQL> select wm_concat(ename) from emp;
    WM_CONCAT(ENAME)
    EASON,G_EASON,ALLEN,WARD,JONES,MARTIN,BLAKE,CLARK,SCOTT,KING,TURNER,ADAMS,JAMES,
    FORD,MILLER

    2、Group by子句

  • 作用:可以将表中的数据分成若干组。
  • Group by子句的语法:SELECT [column,] group function(column), ... FROM table [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column];
  • 例如:求出每个部分的平均工资,要求显示:部门号,部分的平均工资。
  • SELECT deptno, avg(sal) from emp group by deptno;
    SQL> SELECT deptno, avg(sal) from emp group by deptno;
    DEPTNO   AVG(SAL)
        30 1566.66667
        20     2312.5
        10 2916.66667
  • 在SELECT列表中所有未包含在组函数中的列都应包含在GROUP BY子句中。如按照部门和职位进行分组:
    SQL> SELECT deptno, job, avg(sal) from emp group by deptno, job;
            DEPTNO JOB         AVG(SAL)
                    20 CLERK            950
                    30 SALESMAN        1400
                    20 MANAGER         2975
                    30 CLERK            950
                    10 PRESIDENT       5000
                    30 MANAGER         2850
                    10 CLERK           1300
                    20 ANALYST         3000
                    10 MANAGER         2450
    已选择9行。
  • 包含在group by 子句中的列不必包含在SELECT列表当中:
    SQL> select avg(sal) from emp group by deptno;
        AVG(SAL)
    1566.66667
            2312.5
    2916.66667
  • 再如示例:求出每个部分的员工姓名,要求显示:部分标号、员工姓名。
    SQL> select deptno, WM_concat(ename) from emp group by deptno;
    DEPTNO      WM_CONCAT(ENAME)
        10            CLARK,MILLER,KING
        20            EASON,FORD,ADAMS,SCOTT,JONES,G_EASON
        30            ALLEN,JAMES,TURNER,BLAKE,MARTIN,WARD

    3、Having子句

  • 作用:用于对分组后的结果进行过滤。
  • 例子:请平均工资大于2500的部分,要求显示:部门号,平均工资]
  • 不能再WHERE子句中使用组函数,可以在having子句中使用组函数。
    SQL> select deptno,avg(sal) from emp group by deptno having avg(sal) >2500;
    DEPTNO   AVG(SAL)
        10 2916.66667
  • having子句和group by子句通常一起使用。

  • 如果条件中没有组函数,正常使用where语句就可以。比如说:select deptno, avg(sal) from emp where deptno=10 group by deptno;
    SQL> select deptno, avg(sal) from emp where deptno=10 group by deptno;
    DEPTNO   AVG(SAL)
        10 2916.66667
  • where使得分组记录数大大降低,从而提高效率。从SQL优化角度来看,尽量使用where子句。先过滤然后分组。

  • 分组函数的嵌套:求部分平均工资的最大值。
  • select max(avg(sal)) from emp group by deptno;
    SQL> select max(avg(sal)) from emp group by deptno;
    MAX(AVG(SAL))
         2916.66667

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle专题6之Oracle的分组函数与数组分组

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue函数式组件专篇深入分析

Vue提供了一种称为函数式组件的组件类型,用来定义那些没有响应数据,也不需要有任何生命周期的场景,它只接受一些props来显示组件,下面这篇文章主要给大家介绍了关于Vue高级组件之函数式组件的使用场景与源码分析的相关资料,需要的朋友可以参考下
2023-01-05

PHP 数组分组函数在统计分析中的应用

使用 php 的 array_group_by() 函数可以对数组中的数据进行分组,从而方便进行统计分析,包括:分组后,可以通过 array_map() 函数计算每个组中的元素数量。还可以通过自定义回调函数找出每个组中具有最大值的元素。通过
PHP 数组分组函数在统计分析中的应用
2024-05-02

PHP 数组分组函数在金融分析中的应用

php 数组分组函数在金融分析中应用广泛,允许根据特定规则将数组元素分组:持股分组:根据股票代码分组持股,计算每种股票的总数量。交易分组:根据日期分组交易,汇总每日期的交易金额。这些函数为金融分析提供了强大的工具,以组织和汇总数据。PHP
PHP 数组分组函数在金融分析中的应用
2024-05-01

Oracle 窗口函数在数据排序与分组统计中的高效运用

Oracle 窗口函数在数据排序与分组统计中发挥着重要作用,它们能够对数据集进行行级别的运算,而不会像传统聚合函数那样折叠所有行到单个输出。以下是Oracle窗口函数在数据排序与分组统计中的高效运用:窗口函数的基本语法窗口函数的基本语法
Oracle 窗口函数在数据排序与分组统计中的高效运用
2024-10-09

PHP 数组分组函数在数据清洗中的作用

php 的分组函数在数据清洗中发挥着重要作用,包括 array_group_by()、array_column() 和 array_multisort()。这些函数可用于对数组进行分组,例如根据订单 id 或客户 id 分组订单数据,从而简
PHP 数组分组函数在数据清洗中的作用
2024-05-03

PHP 数组分组函数在数据整理中的应用

php 的 array_group_by 函数可根据键或闭包函数对数组中的元素分组,返回一个关联数组,其中键是组名,值是属于该组的元素数组。PHP 数组分组函数在数据整理中的应用引言数据分组是数据处理中的一项常见任务,它可以帮助我们整理
PHP 数组分组函数在数据整理中的应用
2024-05-04

PHP 数组分组函数在数据聚合中的应用

php array_group_by() 函数可根据指定键对数组元素进行分组,形成以键为索引、以数组为值的数组。实例如,根据产品字段分组销售记录后,分组后的数组中键为产品值,值为属于此产品的销售记录数组。PHP 数组分组函数在数据聚合中的应
PHP 数组分组函数在数据聚合中的应用
2024-05-01

MySQL数据库学习之分组函数详解

目录1.分组函数极值求和平均值列数和2.分组查询3.小练习4.大BOSS1.分组函数极值示例表内容见此篇文章找出最高工资:mysql> se编程客栈lect max(sal) from emp;+----------+| max
2022-07-24

PHP 数组按值分组的函数和最佳实践

PHP 数组按值分组的函数和最佳实践array_group_by 函数PHP 8.0 引入了 array_group_by() 函数,用于根据指定键或回调函数对数组元素进行分组。其语法如下:array_group_by(array $a
PHP 数组按值分组的函数和最佳实践
2024-05-04

PHP 数组分组函数在 Web 开发中的应用

php 中的数组分组函数可以对数组元素进行分组和分类,在 web 开发中具有广泛应用。使用 group_by() 函数按给定键对数组进行分组。实战案例:按性别分组用户数据,方便用户管理系统中的分组操作。PHP 数组分组函数在 Web 开发中
PHP 数组分组函数在 Web 开发中的应用
2024-05-05

编程热搜

目录