当我们选不只一个栏位,且其中至少一个栏位有包含函数的运用时,我们就要用到group by这个指令。在这个情况下。

我们需要确定我们有group by所有其他的栏位。换句话说。除了包括函数的栏位外。我们都要将其放在group by子名。

msdn中这样解释:

指定用来放置输出行的组。如果 SELECT 子句 中包含聚合函数,则 GROUP BY 将计算每组的汇总值。指定 GROUP BY 时,选择列表中任意非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。

使用 ROLLUP 汇总数据

在生成包含小计和合计的报表时,ROLLUP 运算符很有用。ROLLUP 运算符生成的结果集类似于 CUBE 运算符生成的结果集。

使用 ROLLUP 汇总数据

在生成包含小计和合计的报表时,ROLLUP 运算符很有用。ROLLUP 运算符生成的结果集类似于 CUBE 运算符生成的结果集。有关详细信息,请参阅使用 CUBE 汇总数据。

下面是 CUBE 和 ROLLUP 之间的具体区别:

CUBE 生成的结果集显示了所选列中值的所有组合的聚合。

ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。

例如,简单表 Inventory 包含下列数据:

Item                 Color                Quantity

-------------------- -------------------- --------------------------

Table                Blue                 124

Table                Red                  223

Chair                Blue                 101

Chair                Red                  210

以下查询将生成小计报表:

SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'

ELSE ISNULL(Item, 'UNKNOWN')

END AS Item,

CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'

ELSE ISNULL(Color, 'UNKNOWN')

END AS Color,

SUM(Quantity) AS QtySum

FROM Inventory

GROUP BY Item, Color WITH ROLLUP

Item                 Color                QtySum

-------------------- -------------------- --------------------------

Chair                Blue                 101.00

Chair                Red                  210.00

Chair                ALL                  311.00

Table                Blue                 124.00

Table                Red                  223.00

Table                ALL                  347.00

ALL                  ALL                  658.00

(7 row(s) affected)

如果将查询中的 ROLLUP 关键字更改为 CUBE,那么 CUBE 结果集保持不变,只是在末尾还会返回下列两行:

ALL                  Blue                 225.00

ALL                  Red                  433.00

CUBE 操作为 Item 和 Color 中值的可能组合生成行。例如,CUBE 不仅报告 Color 值与 Item 值 Chair(Red、Blue 和 Red + Blue)的所有可能组合,还报告 Item 值与 Color 值 Red(Chair、Table 和 Chair + Table)的所有可能组合。

对于 GROUP BY 子句的右列中的每个值,ROLLUP 操作并不报告左列中各值的所有可能组合。例如,ROLLUP 并不报告每个 Color 值的 Item 值的所有可能组合。

ROLLUP 操作的结果集与 COMPUTE BY 返回的结果集具有类似的功能。然而,ROLLUP 具有下列优点:

ROLLUP 返回单个结果集,而 COMPUTE BY 返回多个结果集,而多个结果集会增加应用程序代码的复杂性。

ROLLUP 可以在服务器游标中使用,而 COMPUTE BY 则不可以。

有时,查询优化器为 ROLLUP 生成的执行计划比为 COMPUTE BY 生成的更为高效。

分享到:

2007-03-06 14:07

浏览 1470

评论

mysql groupby rullup_关于group by的深入理解(扩展到rollup,增强groupby,主要用于小计)相关推荐

  1. oracle rollup 小计,Oracle Group By 用法之 —— Rollup (小计功能)

    Oracle数据库中的rollup配合group by命令使用,可以提供信息汇总功能(与"小计"相似) 表B C1 c2 2005-01-01 1 2005-01-01 3 200 ...

  2. GROUP BY你都不会!ROLLUP,CUBE,GROUPPING详解

    Group By Group By 谁不会啊?这不是最简单的吗?越是简单的东西,我们越会忽略掉他,因为我们不愿意再去深入了解它. 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 1 ...

  3. mysql单列去重复group by分组取每组前几条记录加order by排序

    <div class="post"><h1 class="postTitle"><a id="cb_post_title ...

  4. MySQL 8.0开始Group by不再排序

    如题所示,mysql 8.0 开始 group by 默认是没有排序的 那mysql 8.0 之前和 8.0 就有可能结果出现不同 需要警惕 查看版本信息 root@mysql3306.sock> ...

  5. MySQL中distinct和group by性能比较

    MySQL中distinct和group by性能比较[转] 之前看了网上的一些测试,感觉不是很准确,今天亲自测试了一番.得出了结论(仅在个人计算机上测试,可能不全面,仅供参考) 测试过程: 准备一张 ...

  6. MySQL——聚合函数和group by分组的使用

    文章目录 MySQL--聚合函数和group by分组的使用 1.聚合函数介绍 2.GROUP BY 分组 3.常见的聚合函数 4.SQL执行顺序 MySQL--聚合函数和group by分组的使用 ...

  7. MySQL 5.7.20 Group Relication(组复制)搭建手册

    本博文介绍了Group Replication的两种工作模式的架构. 并详细介绍了Single-Master Mode的部署过程,以及如何切换到Multi-Master Mode. 当然,文末给出了G ...

  8. MySQL 5.7.17 Group Relication(组复制)搭建手册【转】

    本博文介绍了Group Replication的两种工作模式的架构. 并详细介绍了Single-Master Mode的部署过程,以及如何切换到Multi-Master Mode. 当然,文末给出了G ...

  9. MySQL 5.7.17 Group Relication(组复制)搭建手册

    本博文介绍了Group Replication的两种工作模式的架构. 并详细介绍了Single-Master Mode的部署过程,以及如何切换到Multi-Master Mode. 当然,文末给出了G ...

最新文章

  1. php div图片局部刷新,前端jquery 后端 thinkphp 实现局部刷新
  2. Linux系统内存的Cached Memory
  3. php margin参数,margin参数简单介绍_html/css_WEB-ITnose
  4. 闲话WPF之二六(WPF性能优化点)
  5. POJ1698 最大流或者匈牙利
  6. COGS-930-找第k小的数-HNOI2012-主席树
  7. 北斗导航 | 复杂环境下卫星导航算法(理论)
  8. Table中Family和Qualifier的关系与区别(转载)
  9. 高等组合学笔记(八):第一类Stirling数, 整数分拆
  10. win10玩cf不能全屏_游戏莫名卡顿三招搞定!Win10游戏优化教程
  11. sql查询重复记录、删除重复记录方法大全
  12. Bash学习系列---第2/3部分
  13. entsel约束条件lisp_autocad-plugin
  14. excel vba导入html表格,网页vba excel表格数据-Excel VBA填写网页上的内容
  15. mvc2 mvc_MVC之外的世界
  16. codewars练习(javascript)-2021/2/18
  17. 越南旅游攻略??转载
  18. unity3d画出漂亮的玫瑰图案函数。
  19. GEE基础-大影像下载
  20. 【毕业设计】答 辩 技 巧 二(以一个过来人的身份,祝各位答辩 过 过 过)

热门文章

  1. encoding python3_关于 Python3 的编码
  2. html遮罩层禁止滚动条滚动,遮罩层上弹窗滚动时禁止下层页面滚动的处理
  3. 摄像头uid怎么获取_每秒30W次的点赞业务,怎么优化?
  4. linux 中断和进程 传递,Linux内核之进程上下文和中断上下文的区别
  5. mysql嵌套select_mysql中如何嵌套使用insert和select
  6. 副本验证失败,指定域文件复制服务(FRS)复制SYSVOL共享。FRS弃用。
  7. Linux新加硬盘添加一个新的LVM磁盘组
  8. 无法获取未定义或 null 引用的属性“title”_JDK中四种对象引用类型
  9. 利用matlab做dsp实验,华工DSP实验一利用Matlab进行频谱分析
  10. vue 导入excel插件_Vue框架下实现导入导出Excel、导出PDF