Oracle2-Rollup和Cube用法

这篇具有很好参考价值的文章主要介绍了Oracle2-Rollup和Cube用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Oracle2-Rollup和Cube用法,Oracle,oracle

在Oracle的聚合函数中,会有按照维度统计的情况,比如上图按照job 和 deptno统计 sal的sum

但是也会遇到同时要求统计只按照job维度统计的情况,并且做到一张表里

1 union 来实现维度不一致

首先反应过来的是分两步查询,再讲结果union起来

select 
  job,null as deptno,sum(sal)
from emp
group by job

union all 

select 
	job,deptno,sum(sal)
from emp
group by job,deptno

Oracle2-Rollup和Cube用法,Oracle,oracle

2 rollup 来实现变化维度

Oracle2-Rollup和Cube用法,Oracle,oracle

2.2 美化一下

SELECT
  job
  ,SUM(CASE WHEN deptno = '10' THEN "sum" END) AS "10"
  ,SUM(CASE WHEN deptno = '20' THEN "sum" END) AS "20"
  ,SUM(CASE WHEN deptno = '30' THEN "sum" END) AS "30"
  ,SUM(CASE WHEN deptno = '小计' or deptno = '-' THEN "sum" END) AS "小计"
FROM (
  SELECT 
    NVL(job, '总计') AS job,
    CASE WHEN job IS NULL THEN '-' ELSE NVL(TO_CHAR(deptno), '小计') END AS deptno,
    SUM(sal) AS "sum"
  FROM emp
  GROUP BY ROLLUP(job, deptno)
) a
GROUP BY job;

Oracle2-Rollup和Cube用法,Oracle,oracle

3 cube

SELECT 
    job,
    deptno,
    SUM(sal) AS "sum"
FROM emp
GROUP BY cube(job, deptno)

Oracle2-Rollup和Cube用法,Oracle,oracle

4 rollup vs cube

从以上的查询结果可以看到 rollup和 rullup的不同点在于
rollup只会对rollup (A,B) 做变化的维度的聚合

而 cube(A,B)对A和B都做变化维度的聚合文章来源地址https://www.toymoban.com/news/detail-824822.html

到了这里,关于Oracle2-Rollup和Cube用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Oracle时间查询使用笔记:sysdate用法

    Oracle的sysdate用法 通常会有 sysdate - 1 / 12这种,或者sysdate - 1 / 24/3 这两种用法,表示从当前时间往前推若干时间 下面就用sysdate - A/B,sysdate - A/B/C代替 第一种 sysdate - A/B型,这种结果是小时,A代表天数,B代表小时 假设结果是N N=A*24/B 这就是算出来往前推多少小时了 举个例子:往

    2024年02月13日
    浏览(31)
  • Oracle中xmltype类型toObject函数用法实例

    Oracle中xmltype类型toObject函数用法总结。 【实例一】 xmltype是oracle中的type object类型。在实际使用中,可以当做xml对象来使用: 执行结果 【实例二】嵌套类型 注意嵌套类型对应到xml上,需要以嵌套类型的名字为根节点:参考下面例子的person字段。 toObject函数实际将xmltype类型变

    2024年02月09日
    浏览(35)
  • oracle sql调优之绑定变量用法举例

    Oracle 绑定变量是一种在 SQL 语句中使用变量的方法,它可以提高 SQL 语句的执行效率、简化编程过程,并且可以防止 SQL 注入攻击。 绑定变量的作用是将变量的值与 SQL 语句分离开来,避免在每次执行 SQL 语句时都需要重新解析和编译 SQL 语句,从而提高 SQL 语句的执行效率。在

    2024年02月15日
    浏览(46)
  • Hive 和 Oracle 中 Decode 函数的用法差异

    在数仓构建过程中,需要从业务那边进行数据的迁移!数仓大多数公司都是使用 Hive ,而业务那边使用的是 Oracle 数据库居多。最近就有个小伙伴在迁移的时候碰到了问题: 从报错来看,在使用 Decode() 函数的时候,传参有问题! 既然问题来了,我们就来解决一下呗,只有不

    2024年02月10日
    浏览(36)
  • Oracle中的行列互转———pivot、unpivot函数用法

            项目开发过程中涉及到oracle数据库的数据操作;但是需要将数据进行列的互转,通过查阅资料可知在oracle中有三种方式可以实现行列互转: ①使用decode 函数; ②使用case when 函数; ③使用pivot函数; Oracle中行列互转_oracle行列转换最简单的方法 https://blog.csdn.net/

    2024年02月09日
    浏览(41)
  • Oracle数据库update语句用法,多表批量更新对应的字段值

    日常工作经常会遇到参照某个表格,更新主表对应字段的值 一般可以用excel的VLOOKup函数进行查找匹配,但是这种方法需要将表从数据库中导出,更新完了之后再导回数据库中。 我们用update语句可以很方便在数据库里完成更新。 语句: update 要修改数据的表名 set 修改的列1=(

    2024年02月06日
    浏览(44)
  • MySQL-分组函数ROLLUP的基本用法

    ROLLUP是GROUP BY子句的扩展。 ROLLUP选项允许包含表示小计的额外行,通常称为超级聚合行,以及总计行。 通过使用ROLLUP选项,可以使用单个查询生成多个分组集。 MySQL中的ROLLUP是用于 产生汇总输出的修饰符,包括表示超级汇总(较高级别)汇总操作的额外行。它使我们能够使用

    2024年02月03日
    浏览(44)
  • MySQL8.0-分组函数ROLLUP的基本用法(GROUPING)

    ROLLUP是GROUP BY子句的扩展。 ROLLUP选项允许包含表示小计的额外行,通常称为超级聚合行,以及总计行。 通过使用ROLLUP选项,可以使用单个查询生成多个分组集。 MySQL中的ROLLUP是用于 产生汇总输出的修饰符,包括表示超级汇总(较高级别)汇总操作的额外行。它使我们能够使用

    2024年02月03日
    浏览(29)
  • 【Oracle】Oracle系列十八--Oracle RAC

    【Oracle】Oracle系列之一–Oracle数据类型 【Oracle】Oracle系列之二–Oracle数据字典 【Oracle】Oracle系列之三–Oracle字符集 【Oracle】Oracle系列之四–用户管理 【Oracle】Oracle系列之五–Oracle表空间 【Oracle】Oracle系列之六–Oracle表分区 【Oracle】Oracle系列之七–表的创建与管理 【Oracl

    2024年02月07日
    浏览(37)
  • 【Oracle】Oracle系列十九--Oracle的体系结构

    【Oracle】Oracle系列之一–Oracle数据类型 【Oracle】Oracle系列之二–Oracle数据字典 【Oracle】Oracle系列之三–Oracle字符集 【Oracle】Oracle系列之四–用户管理 【Oracle】Oracle系列之五–Oracle表空间 【Oracle】Oracle系列之六–Oracle表分区 【Oracle】Oracle系列之七–表的创建与管理 【Oracl

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包