以下内容仅是站长或网友个人学习笔记、总结和研究收藏。不保证正确性
来源于
易百教程

  1. SQL ROLLUP简介ROLLUP是GROUP BY子句的扩展。 ROLLUP选项允许包含表示小计的额外行,通常称为超级聚合行,以及总计行。 通过使用ROLLUP选项,可以使用单个查询生成多个分组集。

注意,分组集是一组用于分组的列。 例如,一个由仓库返回库存的查询,分组集是(warehouse)。

SELECTwarehouse, SUM(quantity) qty
FROMinventory
GROUP BYwarehouse;

以下是SQL ROLLUP的基本语法:

SELECT c1, c2, aggregate_function(c3)
FROMtable
GROUP BY ROLLUP (c1, c2);

ROLLUP假定输入列之间存在层次结构。 例如,如果输入列是(c1,c2),则层次结构c1> c2。 ROLLUP生成考虑此层次结构有意义的所有分组集。 这就是为什么我们经常使用ROLLUP来生成小计和总计以用于报告目的。
在上面的语法中,ROLLUP(c1,c2)生成以下三个分组集:

(c1,c2)
(c1)
()

Oracle,Microsoft SQL Server和PostgreSQL支持此语法。 但是,MySQL的语法略有不同,如下所示:

SELECT c1, c2, aggregate_function(c3)
FROMtable_name
GROUP BY c1, c2 WITH ROLLUP;
  1. SQL ROLLUP示例我们将使用在GROUPING SETS教程中设置的inventory表进行演示。
mysql> select * from inventory;
+---------------+---------+----------+----------+
| warehouse     | product | model    | quantity |
+---------------+---------+----------+----------+
| San Jose      | iPhone  | 6s       |      100 |
| San Fransisco | iPhone  | 6s       |       50 |
| San Jose      | iPhone  | 7        |       50 |
| San Fransisco | iPhone  | 7        |       10 |
| San Jose      | iPhone  | X        |      150 |
| San Fransisco | iPhone  | X        |      200 |
| San Jose      | Samsung | Galaxy S |      200 |
| San Fransisco | Samsung | Galaxy S |      200 |
| San Fransisco | Samsung | Note 8   |      100 |
| San Jose      | Samsung | Note 8   |      150 |
+---------------+---------+----------+----------+
10 rows in set

2.1. SQL ROLLUP有一个列示例
以下语句使用GROUP BY子句和SUM()函数按仓库查找总库存:

SELECT warehouse, SUM(quantity)
FROMinventory
GROUP BY warehouse;
+---------------+---------------+
| warehouse     | SUM(quantity) |
+---------------+---------------+
| San Fransisco | 560           |
| San Jose      | 650           |
+---------------+---------------+
2 rows in set

要检索所有仓库中的总产品数,请将ROLLUP添加到GROUP BY子句,如下所示:

SELECT warehouse, SUM(quantity)
FROMinventory
GROUP BY ROLLUP(warehouse);

执行上面示例代码,得到以下结果:

正如在结果中看到的那样,warehouse列中的NULL值指定了总计超级聚合行。 在此示例中,ROLLUP选项使查询生成另一行,显示所有仓库中的总产品数量。要使输出更具可读性,可以使用COALESCE()函数将NULL值替换All值,如下所示:

SELECT COALESCE(warehouse, 'All warehouses') AS warehouse,SUM(quantity)
FROMinventory
GROUP BY ROLLUP (warehouse);

执行上面示例代码,得到以下结果:

2.2. SQL ROLLUP有多列示例
以下语句按warehouse和product计算库存:

SELECT warehouse, product, SUM(quantity)
FROMinventory
GROUP BY warehouse, product;

执行上面示例代码,得到以下结果:

将ROLLUP添加到GROUP BY子句:

SELECT warehouse, product, SUM(quantity)
FROMinventory
GROUP BY ROLLUP (warehouse , product);

执行上面示例代码,得到以下结果:

请注意,输出包含两个分析级别的摘要信息,而不仅仅是一个:

在指定仓库的每组产品行之后,将显示一个额外的摘要行,显示总库存。 在这些行中,product列中的值设置为NULL。在所有行之后,将显示一个额外的摘要行,显示所有仓库和产品的总库存。 在这些行中,warehouse 和 product 列中的值设置为NULL。
2.3. SQL ROLLUP带有部分汇总的示例
可以使用ROLLUP执行部分汇总,以减少计算的小计数,如以下示例所示:

SELECT warehouse, product, SUM(quantity)
FROMinventory
GROUP BY warehouse, ROLLUP (product);

执行上面示例代码,得到以下结果:

在此示例中,ROLLUP仅为product列而不是warehouse列生成超级聚合摘要。
在本教程中,您学习了如何使用SQL ROLLUP通过单个查询执行多级分析。

数据库小计和总计之 Rollup函数 简单介绍相关推荐

  1. oracle如何总计,如何在Oracle中产生分组小计和总计?

    问题陈述: 您想在Oracle中找出总数,小计和总计. 解决方案: Oracle ROLLUP函数使用从右到左将中间级别汇总到任何总计的方法在多个级别上执行分组.为了演示ROLLUP功能,我们将创建一 ...

  2. sql server 分组小计和总计

    在 SQL Server 中,要对某一列进行分组并计算小计和总计,可以使用 GROUP BY 和 SUM() 函数. 例如,对于一个名为 "orders" 的表,其中有 " ...

  3. 小计 合计 总计 共计 怎么解释?

    排列顺序:小计.总计.合计.共计分开使用. 小计:小计就是简单核算一下单个体,可理解为日小计 合计:合计就是把所有小计加起来,可理解为月合计 总计:总计就是把合计加起来,可理解为年总计 共计:一组数字 ...

  4. SAP小技巧之 实现SMARTFORM打印中的小计与总计

    点击蓝字 关注我们 一 前言 公众号群里面有人在讨论SMARTFORM打印中的小计和总计的实现.好久没有做SMARTFORM了, 所以没有参与讨论. 后来网上查询了一下. 也没有找到很好的解决方案.所 ...

  5. Delphi报表开发ReportMachine的小计和总计的计算

    Delphi报表开发ReportMachine的小计和总计的计算 2011年7月2日 分类: Delphi, 开发笔记 最近在做一个Delphi的发货清单的打印程序,其中涉及到需要计算清单的小计和总计 ...

  6. 小计合计总计表格_总计总计重复的Excel小计

    小计合计总计表格 Do you use Excel's Subtotal command to automatically create subtotals in a list? I prefer p ...

  7. j2ee:servlet练习鲜花项目(购物车、分页、ajax、iframe弹出层、jquery、json(计算小计、总计)、map集合高级遍历、图片上传)...

    第一:概念 购物车全过程的理解:  1.新建一个购物车类,这样,这个类里面就可以封装商品对象和商品数量了.  2.每种商品都是一个购物车  3.把所有的购物车放在一起,也就是放在一个map集合中,这样 ...

  8. 实战 SQL:销售数据的小计/合计/总计以及数据透视表

    文章目录 小计.合计与总计 多维度交叉统计 自定义统计维度 数据透视表 总结 学习过 SQL 的人都知道,使用聚合函数(AVG.SUM.COUNT.MIN/MAX 等)和分组操作(GROUP BY)可 ...

  9. sqlserver 小计合计总计

    SELECT CASE WHEN GROUPING(F1) = 1 THEN '总计' WHEN GROUPING(F1) = 0 AND GROUPING(F2) = 1 THEN  F1+'合计' ...

  10. sqlservere小计合计总计

    SELECT CASE WHEN GROUPING(F1) = 1 THEN '总计' WHEN GROUPING(F1) = 0 AND GROUPING(F2) = 1 THEN F1+'合计' ...

最新文章

  1. 【c语言】蓝桥杯算法提高 勾股数
  2. java int越界_用位运算判断int类型变量越界
  3. python爬虫赚钱途径-终于领会python爬虫赚钱的途径
  4. SpringFlux入门(上篇)
  5. sql server 以10分钟分组 统计人数
  6. .NET Core:通过Web API进行微服务交互
  7. 【VC ++6.0】VC++6.0的安装
  8. 纯CSS3代码制作六边形图形教程
  9. 软件-xyplorer
  10. 小学计算机教师业务笔记,小学教师业务笔记
  11. SEO简单优化使用百度主动提交原创文章来达到秒收录
  12. [Windows] 迅雷 无修改 无限制 无视封锁
  13. 专家揭示连锁加盟陷阱
  14. cross-request插件下载
  15. 开放流程自动化标准测试实验室花开遍地,全球巡礼—上篇
  16. 用css画一个原型里有一个对号或者叉叉的图标
  17. 诺基亚5800XM深度测
  18. 图像旋转中点的公式推导
  19. 轻量级高性能多维分析套件
  20. 小米电视去广告2020_小米电视取消开机广告?官方人士回应来了

热门文章

  1. Qunee学习开发体会
  2. html5 的属性和方法,Qunee for HTML5 - 中文 : 常用属性与方法
  3. GoEasy使用详解
  4. grads 相关系数_气象绘图软件GrADS高级使用技巧
  5. c# vs2019 AForge简单使用
  6. 接口测试面试题及参考答案,轻松拿捏面试官
  7. android清除图案锁 位置,安卓手机清除锁屏密码、锁屏图案的教程
  8. 追赶法源程序c语言,追赶法求三对角线方程组程序设计.doc
  9. 设置cookie存活时间_js中如何设置cookie的保存时间呢?
  10. eclipse:设置maven本地仓库