当前位置: 首页 > news >正文

SQL 中 ROLLUP 的使用方法

ROLLUP 是 SQL 中一种分组操作,它生成多个分组集的小计行和总计行,提供层次化的汇总数据。


基本语法

SELECT column1, column2, ..., aggregate_function(column)
FROM table
GROUP BY ROLLUP (column1, column2, ...);

使用示例

假设有一个销售表 sales

SELECT region, product, SUM(amount) AS total_sales
FROM sales
GROUP BY ROLLUP (region, product);

这个查询会生成:

  1. 每个地区每种产品的销售总额(最细粒度)

  2. 每个地区所有产品的销售小计

  3. 所有地区所有产品的销售总计


多列 ROLLUP

SELECT year, quarter, month, SUM(revenue) AS total_revenue
FROM financial_data
GROUP BY ROLLUP (year, quarter, month);

这会生成:

  1. 每年每季度每月的收入

  2. 每年每季度的收入小计

  3. 每年的收入小计

  4. 总收入总计

部分 ROLLUP

SELECT department, job_title, gender, AVG(salary) AS avg_salary
FROM employees
GROUP BY department, ROLLUP (job_title, gender);

结合其他 GROUP BY 功能

SELECT store_id, product_category, product_subcategory,SUM(sales) AS total_sales
FROM retail_data
GROUP BY GROUPING SETS ((store_id, product_category, product_subcategory),ROLLUP (store_id, product_category)
);

识别汇总行

SELECT CASE WHEN GROUPING(region) = 1 THEN 'All Regions' ELSE region END AS region,CASE WHEN GROUPING(product) = 1 THEN 'All Products' ELSE product END AS product,SUM(amount) AS total_sales
FROM sales
GROUP BY ROLLUP (region, product);

注意事项

  1. ROLLUP 生成的分组集是从最详细到最不详细的层次结构

  2. 列的顺序会影响结果,ROLLUP(a,b,c) 与 ROLLUP(c,b,a) 结果不同

  3. 在 MySQL 中,ROLLUP 不能与 ORDER BY 一起使用(除非使用 LIMIT)

ROLLUP 是生成层次化报表的强大工具,特别适合需要多级汇总的商业报表场景。

相关文章:

  • 大模型面经 | 春招、秋招算法面试常考八股文附答案(三)
  • vue3 主题模式 结合 element-plus的主题
  • 《数据结构之美--双向链表》
  • Spring_MVC 高级特性详解与实战应用
  • Debian GNU/Linux的新手入门介绍
  • 【Spring】深入解析 Spring AOP 核心概念:切点、连接点、通知、切面、通知类型和使用 @PointCut 定义切点的方法
  • 安装Github软件详细流程,win10系统从配置git到安装软件详解,以及github软件整合包制作方法(
  • BUUCTF PWN刷题笔记(1-9)
  • LangChain与图数据库Neo4j LLMGraphTransformer融合:医疗辅助诊断、金融风控领域垂直领域、法律咨询场景问答系统的技术实践
  • 垂直行业突围:工业软件在汽车、航空领域的 “破壁” 实践
  • Google Store 如何利用 glTF 3D 模型改变产品教育
  • 每日一题——数据中心网络地址规划
  • 解决离线部署气隙相关问题
  • 35、Python 异步编程入门与asyncio从原理到实战
  • Itext进行PDF的编辑开发
  • .NET应用UI框架DevExpress XAF v24.2新版亮点:支持.NET 9
  • 如何远程访问家中服务器-FRP内网穿透详细
  • 2025年蓝桥杯第十六届CC++大学B组真题及代码
  • 《Java工程师面试核心突破》专栏简介
  • 多源异构网络安全数据(CAPEC、CPE、CVE、CVSS、CWE、ATTCK、D3FEND)的详细解析,包括其作用、数据内容及相互联系
  • 中国戏剧奖梅花奖终评启动在即,17场演出公益票将发售
  • 玉渊谭天丨先爆视频再爆订单,美关税影响下企业因短视频火出圈
  • 观察|智驾监管升级挤掉宣传水分,行业或加速驶入安全快车道
  • 报告:去年物业服务百强企业营业收入均值同比增长3.52%
  • 汕头22岁女子手术成功却意外脑死亡,家属称缺氧30分钟医生未发觉
  • 摩根大通首席执行官:贸易战损害美国信誉