Oracle分组ROLLUP、GROUP BY、GROUPING、GROUPING SETS区别和作用

电机控制易混知识点1-基波频率/载波频率/采样频率 在电机控制学习工作中会接触到很多专业名词,其中基波频率,载波频率,采样频率是最常接触到的,特别对于电机控制小白开说,不容易理解,现对这几个概念做下总结归纳。 阅读详情

1.ROLLUP

ROLLUP的作用相当于

SQL> set autotrace on
SQL> select department_id,job_id,count(*)
    from employees
    group by department_id,job_id
   union
    select department_id,null,count(*)
    from employees
    group by department_id
    union
    select null,null,count(*)
   from employees;

这里写图片描述

最后面的SA_REP表示此jobid没有部门,为null
这里的union系统默认进行了排序
这里写图片描述

使用ROLLUP能达到上面GROUP BY的功能,但性能开销更小

SQL> ed
已写入 file afiedt.buf
select department_id,job_id,count(*)
from employees
group by rollup (department_id,job_id)
SQL> /

这里写图片描述

2.为什么ROLLUP会比GROUP BY性能好

ROLLUP(a,b,c)=a,b,c+a,b+a+All
通过一次全表扫描,得出a,b,c的分组统计信息后;分组统计a,b 相同,c不同的项即可得到a,b;依此类推……,就不用去多次全表扫描

3.ROLLUP的另类用法ROLLUP(a,(b,c))

ROLLUP((a,b))
SQL> ed
已写入 file afiedt.buf

   select department_id,job_id,count(*)
   from employees
   group by rollup ((department_id,job_id))
SQL> /

注意面的语句是group by rollup ((department_id,job_id))
不是group by rollup (department_id,job_id)
这里写图片描述
这里写图片描述

4.GROUPING函数的作用是放总记

如一个公司有多个部门,一个部门有多个岗位,一个岗位上有多个人
Rollup(部门,工作岗位) sum(每人的工资)
当部门的GROUPING为0,工作岗位的GROUPING也为0时,说明是公司发的总工资,此时放公司总计
当部门的GROUPING为0,工作岗位的GROUPING也为1时,说明是部门发的总工资,此时放部门小记
当部门的GROUPING为1,工作岗位的GROUPING也为1时,显示的是某部门某职位的工资和计

SQL> SELECT   department_id DEPTID, job_id JOB,
             SUM(salary),
             GROUPING(department_id) GRP_DEPT,
             GROUPING(job_id) GRP_JOB
    FROM     employees
    GROUP BY ROLLUP(department_id, job_id);

这里写图片描述
第一个SA_REP表示此jobid没有部门,为null

5.GROUPING SETS与GROUPING的作用是不同的

Oracle服务器计算GROUPING SETS子句中所有的组并将结果通过UNION ALL组合成一个结果集.
GROUPING SETS的效果:1.只需要访问一次基表.2.不需要写很复杂的UNION语句.

SELECT   department_id, job_id, null manager_id,avg(salary)
FROM     employees
GROUP BY (department_id,job_id)
UNION ALL
SELECT   null department_id, job_id, manager_id,avg(salary)
FROM     employees
GROUP BY (job_id,manager_id)
##等同于
SQL> set autotrace on
SQL> SELECT   department_id, job_id,
             manager_id,avg(salary)
    FROM     employees
    GROUP BY GROUPING SETS ((department_id,job_id), (job_id,manager_id));

这里写图片描述
上面得到的是通过job_id,manager_id分组的avg(salary)
下面的是通过department_id,job_id分组的avg(salary)
这里写图片描述
这里写图片描述

CP AUTOSAR标准之AUTOSAR OS(AUTOSAR_SWS_OS)(二) AUTOSAR OS是一个Operating System,即操作系统。它最核心的功能是管理任务和事件的调度,不同任务间的同步流,并且提供监控和错误处理功能。或者用最简化理解就是一个函数调度器。 阅读详情

相关推荐

通过JLink下载实现工控MCU批量烧录实战案例

利用JLink下载工具实现高效稳定的工控MCU批量烧录,提升产线效率。案例详细解析了脚本配置与自动化流程,突出jlink下载的可靠性和可扩展性,适用于大规模嵌入式部署场景。

weixin_30205153的博客 814

Oracle的高级分组函数grouping和grouping_id

在网上对Oracle的高级分组函数grouping和grouping_id的讲解并不多,特别是grouping_id,还有解说有误的。经过1天研究,已经完全掌握了两个函数的作用和用法,下面简单的讲述即可明白。下面给大家分享。

weixin_42821740的博客 2197

【验证技能树】UVM 源码解读01 -- UVM本质上就是软件工程方法论在芯片验证领域的应用

文章摘要: UVM(通用验证方法学)是基于SystemVerilog的芯片验证框架,采用组件化、面向对象和事务级抽象设计。其核心在于职责分离与数据流,通过Driver、Monitor、Sequencer等模块协作实现高效验证。UVM强调复用性、可扩展性和可维护性,类似软件工程的模块化与低耦合原则。理解其体系结构比记忆API更重要,有助于灵活组合组件并提升验证效率。UVM不仅是工具,更融合了软件工程思维,推动验证工作向自动化、系统化发展。掌握UVM底层逻辑能优化验证环境设计,适用于从IP到SoC的多层级验证场

qq_45869788的博客 1043

oracle中grouping,ORACLE GROUPING函数的使用

GROUPING函数可以接受一列,返回0或者1。如果列值为空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查询中使用。当需要在返回空值的地方显示某个值时,GROUPING()就非常有用。1、在ROLLUP中对单列使用GROUPING()SQL> select division_id,sum(salary)2 from empl...

weixin_29094539的博客 856

RTX 50系显卡实战3DGS:从源码编译到避坑指南

本文详细介绍了在RTX 50系显卡上成功运行3D Gaussian Splatting(3DGS)的完整实战指南。针对新显卡架构与旧版预编译包不兼容的核心问题,文章提供了从源码编译CUDA扩展的清晰步骤,包括环境配置、依赖安装、核心模块diff-gaussian-rasterization和simple-knn的编译避坑方法,并涵盖了数据准备、模型训练与实时预览的全流程,帮助开发者高效利用新硬件进行3D重建。

weixin_28314575的博客 264

01 底盘制动产品之轮速传感器

轮速传感器是用来测量汽车车轮转速的传感器。对于现代汽车而言,轮速信息是必不可少的,汽车动态控制系统(VDC)、汽车电子稳定程序(ESP)、防抱死制动系统(ABS)、自动变速器的控制系统等都需要轮速信息。

汽车软件工程师 | 好奇博主 | 处女座 4661

Oracle——分组汇总统计函数grouping()

Oracle——分组汇总统计函数grouping() 在Oracle数据库中,进行分组报表查询的时候,查询的SQL中可以使用grouping()函数。 grouping(columnA)函数的意思:当前行如果是由rollup汇总产生的,那么columnA这个字段值为1否则为0; 元数据: 通过grouping查询后的数据: 查询的SQL: SELECT DECODE...

命中的缘分的博客 6454

聚焦112Gb/s SerDes芯片的AN/LT端口自协商和链路学习,评估验证高速链路的信号质量并分析调优(400/800G高速以太网互联接口,AI加速卡网络RDMA性能测试,交换背板接口性能评估)

在112G SerDes高速通道下的400G/800G高速以太网端口下,如何保障通信速率,验证SerDes的数据完整性和链路余量,自动协商(AN)和链路训练(LT)功能显得尤其重要,其在DAC、ACC、AEC铜缆连接或高速背板通信上,自动协商(AN)和链路训练(LT)的工作与否将决定高速链路传输质量的优劣。本文将系统的讨论介绍自动协商(AN)和链路训练(LT)的测试流程,其可以独立使用,也可以与teledynelecroy SierraNet M1288配合使用。

专注有线以太网性能测试--丹麦信雅纳网络(Xena Networks) 9407

oracle 分析函数、GROUPING函数

分析函数 over(Partition by...) 一个超级牛皮的ORACLE特有函数。 天天都用ORACLE,用了快2年了。最近才接触到这个功能强大而灵活的函数。真实惭愧啊! oracle的分析函数over 及开窗函数 一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每...

Leon_Jinhai_Sun的博客 1273

Oracle EBS 如何处理MMT表错误-WIP 实体未定义或不具有期间余额项

错误说明:WIP 实体未定义或不具有期间余额项。(The wip entity is either not defined or does not have a period balance entry)由于工单的创建日期为4月份,工单的余额表记录的期间是4月份,而3月份工单余额表中没有记录。公司将上一个新的库存组织,有一部分测试的工单创建日期在4月份,而工单的发放日期、发料事务处理日期和完工事务处理日期均在3月份。1、关闭3月份库存会计期,待定事务处理存在未计成本物料/WMS。成本类型: PAC成本。

陈显平的专栏-Oracle EBS 656

Taro React组件使用(5) —— RuiPasswordInput 密码输入框显示隐藏和清空

初始化时,需要将传入的 value 赋值给当前组件的 value, 不能直接修改 props 的 value;在组件内输出组件内的变量时,最好先判断输出函数是否定义,再输出,否则很容易引起报错。

止于至善 891

oracle中grouping和grouping_id

<br />1、grouping使用<br />使用grouping可以判断该行是数据库中本来的行,还是有统计产生的行<br />SQL> select grouping(grade),grade,sum(num) from a group by rollup (grade);<br />GROUPING(GRADE) GRADE   SUM(NUM)<br />--------------- ----- ----------<br />              0 a              3<br

lwl_angel的专栏 1869

华为OD机试真题 新系统2026-04-15 Python&JS 实现【失灵的键盘】

有一个键盘有2个按键失灵了,按下这些键时会连续输出其他键对应的字符两次。具体如下: 1. 按下j键一次,屏幕上显示uu(两个连续的u);  按下b键一次,屏幕上显示t(两个连续的t) 2. u键和t键是好的,按下u键一次时,屏幕只会显示一次u(正常按键);按下t键一次时,屏幕只会显示一次t(正常按键) 3. 假定屏幕上连续显示两个t一定是按了一次b键,而不是两次t键;假定按键t之后不会紧接着按键b,即tttt转义为两个b,而不可能是tb

MISAYAONE的博客 525

分组函数之rollup、cube函数、grouping sets函数

rollup 通常和group by语句一起使用,是根据维度在分组的结果集中进行聚合操作(通常为汇总,这取决于SELECT后的聚合函数)。最常用的场景是:为每个分组返回一个小计,同时为所有分组返回总计。1、不带rollup的goup by : Group by A ,B产生的分组种数:1种;返回结果集:也就是这一种分组的结果集。2、带rollup但group by与rollup之间没有任何内容:1)Group by rollup(A ,B) 产生的分组种数:3种;返回结果集:为以上三种分组统计结果集的并集且

Samooyou的博客 5854

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Jarno详解Oracle高级分组函数(ROLLUP, CUBE, GROUPING SETS)

本文主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用法,这些函数可以理解为Group By分组函数封装后的精简用法,相当于多个union all 的组合显示效果,但是要比 多个union all的效率要高。 其实这些函数在时间的程序开发中应用的并不多,至少在我工作的多年时间中没用过几次,因为现在的各种开发工具/平台都自带了这些高级分组统计功能,使用的方便性及美观性都比这些要好。但如果临时查下数据,用这些函数还是不错的。

7074

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

关于rollup,cube,grouping sets的个人理解

1.关于group by rollup的理解group by(字段1,字段2,字段3,字段4)oracle先group by(字段1,字段2,字段3,字段4),group by(字段1,字段2,字段3),group by(字段1,字段2),group by(字段1),最后对查询结果总的group by 例:select cgicode,stockyear,stockmont

Phoenix_99的专栏 6024

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

oracle中group by rollup函数的的用法

一、采用union all的方式拼接 采用union all 方式,union all 左侧查询相关明细记录 ,右侧拼接聚合函数组成的汇总行 简单例子: select column1,column2,column3,column4 from tableA union all select '合计',sum(column2),sum(column3),sum(column4) from table...

宇宙的博客 4009

Oracle中group by 的扩展函数rollup、cube、grouping sets

Oracle的group by除了基本用法以外,还有3种扩展用法,分别是rollup、cube、grouping sets,分别介绍如下: 1、rollup 对数据库表emp,假设其中两个字段名为a,b,c。 如果使用group by rollup(a,b),首先会对(a,b)进行group by ,然后对 a 进行 group by ,最后对全表进行 group by 操作。 如下查询结

afei3418的专栏 1115

GROUP BY中ROLLUP/CUBE/GROUPING/GROUPING SETS使用示例

转自:https://www.cnblogs.com/pangblog/p/3402557.html oracle group by中rollup和cube的区别:Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。CUBE ROLLUP 是用于统计数据的。实验使用SCOTT用户的EMP表测试 1.仅使用GROUP BY分组,GROUP BY后...

weixin_30892763的博客 317

Oracle的rollup、cube、grouping sets函数

Oracle的rollup、cube、grouping sets函数Oracle的group by除了基本用法以外,还有3种扩展用法,分别是rollup、cube、grouping sets。1 rollup假设有一个表test,有A、B、C、D、E5列。如果使用group by rollup(A,B,C),首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。roll up的意思是“卷起”,这也可以帮助我们理

laodajiushiniu的专栏 473

Oracle中的GROUPING SETS函数

在 Oracle 中,GROUPING SETS 是一种用于对数据进行多维度分组聚合的函数,它允许在一个查询中同时指定多个分组方式,相当于将多个 GROUP BY 子句的结果合并(类似 UNION ALL 的效果),但效率更高。GROUPING(job) AS is_job_group – 1表示该行为非职位分组 FROM emp GROUP BY GROUPING SETS ((deptno), (job), ());灵活组合分组条件可以自由组合不同的分组列,甚至包含空分组(整体聚合)。

weixin_43038063的博客 503

GROUP BY后使用ROLLUP子句总结

转载:http://www.blogjava.net/liuyz2006/articles/370728.html group by后使用rollup子句总结 今天接触到了group by后带rollup子句的用法(真是丑死人了,接触ORACLE一两年了今天才知道还有这样一个用法),group by后带rollup子句这个子句所产生的功能实在是太高级了,见了就高兴。但学习完后感

evan_shc的博客 392

oracle cude报错,Oracle的rollup、cube、grouping sets函数

Group by、rollup、cube、grouping sets区别oracle除了group by基本用法之外,还有ROLLUP,CUBE,GROUPING SETS 等扩展方法,这些可以理解为Group By 分组函数封装后的精简用法,相当于多个union all 的组合显示效果,但是要比 多个 union all 的效率要高。1.测试数据CREATE TABLEemp (IDNUMBER...

weixin_42294495的博客 291
上一篇: 线性回归 算法 理论
下一篇: ratio_to_report 分析函数求占比
mllhxn
博客等级 码龄14年 116粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值