11.Oracle中rollup函数详解

【基本介绍】

【格式】:group by rollup(字段1,字段2,字段3,...,字段n)

【说明】:rollup主要用于分组汇总,如果rollup中有n个字段,则会分别按【字段1】、【字段1,字段2】,【字段1,字段2,字段3】,...,【字段1,字段2,字段3,...字段n】进行分组统计,同时还会去掉所有分组字段进行一次统计,因此会有n+1次分组,也就是说,统计的分组维度是从左到右依次增加一列,从0列一直到n列。

【环境】:如下图是本次样例展示所使用的oracle版本。

select * from v$version

【准备样例数据】

样例数据如下图所示:

CLASS-班级,STUDENT-学生,SUBJECT-学科,GRADES-成绩。

【样例展示1】

执行如下sql语句:

select CLASS,sum(GRADES) from T_STUDENT_GRADES group by rollup(CLASS)

返回结果如下图所示:按班级对学生成绩进行分组计算总和,并将所有班级的总成绩进行汇总

【样例展示2】

执行如下sql语句:

select CLASS,STUDENT,sum(GRADES) from T_STUDENT_GRADES group by rollup(CLASS,STUDENT)

返回结果如下图所示:按班级、学生两个维度对成绩进行分组计算总和,并按班级将所有学生的成绩进行汇总,同时将所有班级的总成绩进行汇总

【样例展示3】

执行如下sql语句:

select CLASS,STUDENT,SUBJECT,sum(GRADES) from T_STUDENT_GRADES group by rollup(CLASS,STUDENT,SUBJECT)

返回结果如下图所示:按班级、学生、科目三个维度对成绩进行分组统计,并按班级、科目将学生的所有科目的成绩进行汇总,还按班级将所有学生的成绩进行汇总,同时将所有班级的总成绩进行汇总

相关推荐
m0_640309301 分钟前
mysql如何处理连接数过多导致响应慢_mysql连接数调优
jvm·数据库·python
weixin_458580122 分钟前
PHP怎么实现Toran Proxy代理_PHP依赖包缓存加速【技巧】
jvm·数据库·python
m0_377618234 分钟前
Python Selenium怎么定位元素_By.XPATH与By.CSS_SELECTOR操作DOM节点
jvm·数据库·python
2201_761040596 分钟前
Layui layer.tips提示框怎么设置方向和颜色
jvm·数据库·python
weixin_424999366 分钟前
C#怎么实现EF Core迁移 C#如何用Entity Framework Core进行数据库迁移和更新表结构【数据库】
jvm·数据库·python
m0_743623927 分钟前
安装宝塔面板提示缺少必要的依赖包_批量安装系统库
jvm·数据库·python
qq_334563558 分钟前
SQL提升开发效率_使用CTE重构嵌套子查询逻辑
jvm·数据库·python
qq_6543669814 分钟前
CSS如何处理超长文本换行问题_结合word-wrap属性
jvm·数据库·python
u01091476017 分钟前
Go语言怎么做分布式缓存_Go语言分布式缓存教程【经典】
jvm·数据库·python
Bert.Cai18 分钟前
MySQL简介
数据库·mysql