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
相关推荐
ss2732 小时前
PostgreSQL常见索引问题与解决方案
数据库·postgresql
小徐不徐说2 小时前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
瀚高PG实验室4 小时前
发布端逻辑复制槽消失
数据库·postgresql·瀚高数据库
ss2734 小时前
PostgreSQL慢查询定位与优化
数据库·postgresql
香蕉大香蕉(06敬畏市场)5 小时前
MySQL 单点详解(07)
java·数据库·mysql·ai·博客·八股
smilejingwei6 小时前
TRAE 插件上新 | SQLazy:让 AI 写出可信复杂 SQL
数据库·人工智能·sql
我要见SA姐16 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·数据库·机器学习·oracle·回归
QXWZ_IA7 小时前
边坡监测预算有限时的建设顺序:虚拟基准站与成本账
网络·数据库
这个DBA有点耶8 小时前
1亿条向量内存降95.4%,延迟降80%:金仓AI原生内核真能解决RAG痛点?
数据库·人工智能·开源
Y3815326628 小时前
用 httpx 写 SerpBase 异步客户端:连接池与超时配置
运维·服务器·数据库