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. 【数据结构和算法】 O(1)时间取得栈中的最大 / 最小元素值

    常数时间取得栈中的元素最大值和最小值,我们可以想到当push的时候比较一下,如果待push元素值小于栈顶元素,则更新min值,最大值亦然. 这样有个问题就是当pop的时候,就没了最大最小值. 于是上网 ...

  2. C++第一章概述

    1:C++主要是对于C的继承性做的相当的出色,主要扩充在于程序员可以自己定义自己的数据结构,用数据结构去描述日常生活中的事务,而不是C语言中当当仅有的Struct数据类型等等 2: 每一种语言都有自己 ...

  3. TRANSLATE

    语法格式: TRANSLATE(expr, from_string, to_string) 示例如下: SELECT TRANSLATE('ab 你好 bcdefg', 'abcdefg', '123 ...

  4. python 常用模块

    1.os模块 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果. os.name:返回当前操作系统名称('posix', 'nt', 'os2' ...

  5. java集合框架1

    1.综述 所有集合类都位于java.util包下.集合中只能保存对象(保存对象的引用变量).(数组既可以保存基本类型的数据也可以保存对象). 当我们把一个对象放入集合中后,系统会把所有集合元素都当成O ...

  6. 机器学习框架Scikit Learn的学习

    一   安装 安装pip 代码如下:# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=83 ...

  7. Laravel Controllers

    Basic Controllers Instead of defining all of your route-level logic in a single routes.php file, you ...

  8. jquery easyui的方法参数

    1.form 表单的参数有:submit,validate,clear,load 2.submit 例如: $('#goods-add').form('submit', { url : url, on ...

  9. [C语言 - 9] typedef

    关键字typedef   typedef 操作符可以看做是普通变量和类型之间的转换开关!! 例如 typedef int Integer;//定义了一种类型 int Integer;//定义了一个变量 ...

  10. Codeforces Round #362 (Div. 2) C. Lorenzo Von Matterhorn (类似LCA)

    题目链接:http://codeforces.com/problemset/problem/697/D 给你一个有规则的二叉树,大概有1e18个点. 有两种操作:1操作是将u到v上的路径加上w,2操作 ...