Oracle中的Rollup 使用方法

  • Oracle 版本: 19c ,Production version 19.3.0.0.0 Enterprise

  • 使用场景:对结果集生成总计、小计效果

  • 模拟数据:

    数学 语文 学号 班级
    90 80 0001 1班
    80 95 0002 1班
    77 99 0003 2班
    95 85 0004 2班
  • 例子 1(按照班级分组小计、班级总分) :

    sql 复制代码
    SELECT 
    	NVL(班级,'总计') 班级,
    	CASE WHEN 班级 IS NULL THEN '-' ELSE NVL(学号,'小计') END 学号,
      SUM(数学) 数学,
      SUM(语文) 语文
    FROM score
    GROUP BY ROLLUP(班级,学号)
    ORDER BY 班级,学号
    班级 学号 数学 语文
    1班 0001 90 80
    1班 0002 80 95
    1班 小计 170 175
    2班 0003 77 99
    2班 0004 95 85
    2班 小计 172 184
    总计 - 342 359
  • 例子2 (只有总计)

    sql 复制代码
    SELECT 
    	NVL(班级,'总计') 班级,
    	CASE WHEN 班级 IS NULL THEN '-' ELSE NVL(学号,'小计') END 学号,
      SUM(数学) 数学,
      SUM(语文) 语文
    FROM score
    GROUP BY ROLLUP((班级,学号)) -- 意思是 班级、学号组合分组
    ORDER BY 班级,学号
    班级 学号 数学 语文
    1班 0001 90 80
    1班 0002 80 95
    2班 0003 77 99
    2班 0004 95 85
    总计 - 342 359
相关推荐
早日退休!!!22 分钟前
大模型推理瓶颈七层分析模型
java·服务器·数据库
大山同学30 分钟前
claudecode精炼版-CoreCoder
数据库·人工智能·claude code·corecoder
of Watermelon League1 小时前
5、使用 pgAdmin4 图形化创建和管理 PostgreSQL 数据库
数据库·postgresql
Dontla1 小时前
Python asyncpg库介绍(基于Python asyncio的PostgreSQL数据库驱动)连接池、SQLAlchemy
数据库·python·postgresql
俺不要写代码1 小时前
数据库:DQL
数据库·sql·mysql
zh1570231 小时前
如何编写动态SQL存储过程_使用sp_executesql执行灵活查询
jvm·数据库·python
2401_824222691 小时前
SQL报表统计数据量巨大_分批统计策略
jvm·数据库·python
俺不要写代码1 小时前
数据库:DCL
数据库
X56611 小时前
mysql如何处理连接数过多报错_调整max_connections参数
jvm·数据库·python
学习3人组1 小时前
OEE(设备综合效率)的标准定义、公式、损失分类、以及在工位触屏/MES里怎么采集和统计
大数据·网络·数据库