MySQL中的WITH ROLLUP

MySQL的扩展SQL中有一个非常有意思的应用WITH ROLLUP,在分组的统计数据的基础上再进行相同的统计(SUM,AVG,COUNT…),非常类似于Oracle中统计函数的功能,Oracle的统计函数更多更强大。

下面演示单个司机以及所有司机的总行驶里程数和平均行驶里程数:

mysql> select name,sum(miles) as 'miles/driver'

-> from driver_log group by name with rollup;

+-------+--------------+

| name  | miles/driver |

+-------+--------------+

| Ben   |          362 |

| Henry |          911 |

| Suzi  |          893 |

| NULL  |         2166 |

+-------+--------------+

4 rows in set (0.00 sec)

mysql> select name,avg(miles) as driver_avg

-> from driver_log group by name with rollup;

+-------+------------+

| name  | driver_avg |

+-------+------------+

| Ben   |   120.6667 |

| Henry |   182.2000 |

| Suzi  |   446.5000 |

| NULL  |   216.6000 |

+-------+------------+

4 rows in set (0.00 sec)

mysql> select name,sum(miles) as 'miles/driver',avg(miles) as driver_avg

-> from driver_log group by name with rollup;

+-------+--------------+------------+

| name  | miles/driver | driver_avg |

+-------+--------------+------------+

| Ben   |          362 |   120.6667 |

| Henry |          911 |   182.2000 |

| Suzi  |          893 |   446.5000 |

| NULL  |         2166 |   216.6000 |

+-------+--------------+------------+

4 rows in set (0.00 sec)

在多个分组下WITH ROLLUP同样有效:

mysql> select srcuser,dstuser,count(*) from mail group by srcuser,dstuser;

+---------+---------+----------+

| srcuser | dstuser | count(*) |

+---------+---------+----------+

| barb    | barb    |        1 |

| barb    | tricia  |        2 |

| gene    | barb    |        2 |

| gene    | gene    |        3 |

| gene    | tricia  |        1 |

| phil    | barb    |        1 |

| phil    | phil    |        2 |

| phil    | tricia  |        2 |

| tricia  | gene    |        1 |

| tricia  | phil    |        1 |

+---------+---------+----------+

10 rows in set (0.05 sec)

mysql> select srcuser,dstuser,count(*) from mail group by srcuser,dstuser with rollup;

+---------+---------+----------+

| srcuser | dstuser | count(*) |

+---------+---------+----------+

| barb    | barb    |        1 |

| barb    | tricia  |        2 |

| barb    | NULL    |        3 |

| gene    | barb    |        2 |

| gene    | gene    |        3 |

| gene    | tricia  |        1 |

| gene    | NULL    |        6 |

| phil    | barb    |        1 |

| phil    | phil    |        2 |

| phil    | tricia  |        2 |

| phil    | NULL    |        5 |

| tricia  | gene    |        1 |

| tricia  | phil    |        1 |

| tricia  | NULL    |        2 |

| NULL    | NULL    |       16 |

+---------+---------+----------+

15 rows in set (0.00 sec)

MySQL中的WITH ROLLUP的更多相关文章

  1. mysql中的with rollup得到group by的汇总信息

    使用mysql中的with rollup可以得到每个分组的汇总级别的数据: 表如下: CREATE TABLE `test3` (  `id` int(5) unsigned NOT NULL AUT ...

  2. Mysql中的WITH ROLLUP用法

    1.WITH ROLLUP:在group分组字段的基础上再进行统计数据. 例子:首先在name字段上进行分组,然后在分组的基础上进行某些字段统计,表结构如下: CREATE TABLE `test` ...

  3. MySQL中的with rollup的作用

    个人理解: 文字性理解 ---> 大分组 group by 之后 在进行组内汇总with rollup.下面的例子我觉得写的不错,理解也很容易. 例子: 转  http://www.cnblog ...

  4. MySQL中的两种临时表

    MySQL中的两种临时表 伯乐在线2016-07-06 05:16:52阅读(4556)评论(3) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 ...

  5. MySQL 中的两种临时表

    来源:阿里云RDS - 数据库内核组 链接:http://mysql.taobao.org/monthly/2016/06/07/ 外部临时表 通过CREATE TEMPORARY TABLE 创建的 ...

  6. mysql中的sql

    变量 用户变量: 在用户变量前加@ 系统变量: 在系统变量前加@@ 运算符 算术运算符有: +(加), -(减), * (乘), / (除) 和% (求模) 五中运算 位运算符有: & (位于 ...

  7. mysql 中语句执行的顺序以及查询处理阶段的分析

    原文链接:http://www.php.cn/mysql-tutorials-408865.html 本篇文章给大家带来的内容是关于mysql中语句执行的顺序以及查询处理阶段的分析,有一定的参考价值, ...

  8. MySQL中的基本SQL语句

    标准SQL包含了4种基本的语句类别: DDL语句,数据定义语句,主要用来定义数据库,表名,字段,例如create,drop,alter. DML语句,数据操作语句,用来对数据记录的增删改查,还用来保证 ...

  9. mysql 中实现行变列

    前言: mysql行列变化,最难的就是将多个列变成多行,使用的比较多的是统计学中行变列,列变行,没有找到现成的函数或者语句,所以自己写了存储过程,使用动态sql来实现,应用业务场景,用户每个月都有使用 ...

随机推荐

  1. STL底层数据结构实现

    C++ STL 的实现: 1.vector      底层数据结构为数组 ,支持快速随机访问 2.list            底层数据结构为双向链表,支持快速增删 3.deque       底层 ...

  2. 最短路+线段交 POJ 1556 好题

    // 最短路+线段交 POJ 1556 好题 // 题意:从(0,5)到(10,5)的最短距离,中间有n堵墙,每堵上有两扇门可以通过 // 思路:先存图.直接n^2来暴力,不好写.分成三部分,起点 终 ...

  3. 判断线段和直线相交 POJ 3304

    // 判断线段和直线相交 POJ 3304 // 思路: // 如果存在一条直线和所有线段相交,那么平移该直线一定可以经过线段上任意两个点,并且和所有线段相交. #include <cstdio ...

  4. 多校5 1004 HDU5784 统计锐角三角形数目

    http://acm.hdu.edu.cn/showproblem.php?pid=5784 题意:n个点,找多少个锐角三角形数目 思路:极角排序+two pointers 当前选择的点集要倍增一倍, ...

  5. 一个谷粉和3年的Google Reader重度使用者的碎碎念

    2013-03-14 上午看到Andy Rubin辞去Android业务主管职务.由Chrome及应用高级副总裁继任的新闻,还在想这会给Android带来什么,中午刷微博的时候就挨了当头一棒:Goog ...

  6. tomcat http https

    Tomcat如何既支持http又支持https?在server.xml中开启两个connector: http: <Connector port="8080" maxHttp ...

  7. 如何用十条命令在一分钟内检查Linux服务器性能

    “如果你的Linux服务器突然负载暴增,报警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断 ...

  8. Mysql数据库插入的中文字段值显示问号的问题解决

    最近我使用myeclipse连接mysql数据库查询表中的数据,表中字段值为中文的字段显示问号,查了很多资料将解决方法总结如下: 步骤一:修改mysql数据库的配置文件my.ini或者my-defau ...

  9. XML学习笔记(2)--dom4j操作XML

    1. 介绍(四种方式的比较这部分转载自:http://www.blogjava.net/xcp/archive/2010/02/12/312617.html) 1)DOM(JAXP Crimson解析 ...

  10. Spring Auto scanning components

    Normally you declare all the beans or components in XML bean configuration file, so that Spring cont ...