GROUP BY...WITH ROLL UP 是group by 的高配版,在group by 分组之后,再合计总数。

ex:求8月1号到9号每日投资人数

SELECT

COUNT(DISTINCTinvestor_uid)AA,

FROM_UNIXTIME(add_time, '%Y-%m-%d')BB

FROM

lzh_borrow_investor

WHERE

FROM_UNIXTIME(add_time) BETWEEN '2016-8-1 00:00:00'

AND '2016-8-10 00:00:00'

GROUP BY

FROM_UNIXTIME(add_time, '%Y-%m-%d') WITH ROLLUP;

结果如下:

AA           BB

32016-08-01

12016-08-02

32016-08-03

42016-08-04

12016-08-05

12016-08-06

32016-08-07

62016-08-08

42016-08-09

25

很奇怪对不对,3+1+3+4+1+1+3+6+4!=25,这是因为distinct这个关键词。每日的投资人数和1-9号总投资人数是不同的,roll up 去重了。另外如果group by 了2个列,with rollup 也会分别统计第一个列,再统计两个列;举个网上找的例子:

SELECT

CASE WHEN (GROUPING(SEX) = 1) THEN '统计-ROLLUP'

ELSE ISNULL(SEX, 'UNKNOWN')END ASSEX ,CASE WHEN (GROUPING([DEPARTMENT]) = 1) THEN '统计-ROLLUP'

ELSE ISNULL([DEPARTMENT], 'UNKNOWN')END AS [DEPARTMENT],COUNT(0)FROM DBO.[STAFF]

GROUP BY SEX,[DEPARTMENT] WITHROLLUP

与group by ...with rollup 孖生用法是  group by ...cube 二者都适用于sql server ,不过这个cube在mysql 中并不适用。

with cube 与with rollup的不同点在于:

使用 ROLLUP 会先统计分组下的,然后在对GROUP BY的第一列字段进行统计,最后计算总数,而 CUBE 则是先分组统计,然后统计GRUOP BY 的每个字段,最后进行汇总。

举个cube例子:

SELECT

CASE WHEN (GROUPING(SEX) = 1) THEN '统计-CUBE'

ELSE ISNULL(SEX, 'UNKNOWN')END ASSEX ,CASE WHEN (GROUPING([DEPARTMENT]) = 1) THEN '统计-CUBE'

ELSE ISNULL([DEPARTMENT], 'UNKNOWN')END AS [DEPARTMENT],COUNT(0)FROM DBO.[STAFF]

GROUP BY SEX,[DEPARTMENT] WITH CUBE

mysql with roll up_GROUP BY...WITH ROLL UP 分组统计后的再合计相关推荐

  1. Mysql按日、周、月进行分组统计

    我们在用Mysql抽取数据时候,经常需要按照天.周.月等不同的粒度对数据进行分组统计.而我们的时间可能是"2017/12/5 0:0:0"这种准确的时间.所以在进行分组之前我们需要 ...

  2. mysql date_format 按不同时间单位进行分组统计

    DATE_FORMAT(date,format)    根据format字符串格式化date值.下列修饰符可以被用在format字符串中:    %M     月名字(January--Decembe ...

  3. mysql 日期group_MySql 使用GROUP BY 按照日期分组统计

    SELECT DATE_FORMAT(时间字段名,'%Y-%m-%d'),count(*) FROM table where 条件 GROUP BY DATE_FORMAT(时间字段名,'%Y-%m- ...

  4. mysql 存储过程无效_用VC通过DLL包连接MySQL,执行存储过程后,再执行其他查询无效?解决方法...

    用VC通过DLL包连接mysql,执行存储过程后,再执行其他查询无效? MYSQL mysql; mysql_init(&mysql); mysql_real_connect(&mys ...

  5. MySQL 数据库常用命令—where like union 排序 分组 连接

    引言 本篇博客对 MySQL 数据库的一些命令进行分享. where 语句 基本语法规则: select field1, field2,...fieldN from table_name1, tabl ...

  6. mysql十分钟分组_MYSQL每隔10分钟进行分组统计的实现方法

    前言 本文的内容主要是介绍了mysql每隔10分钟进行分组统计的实现方法,在画用户登录.操作情况在一天内的分布图时会非常有用,之前我只知道用「存储过程」实现的方法(虽然执行速度快,但真的是太不灵活了) ...

  7. mysql myisam存储引擎不能添加外键,添加后显示成功,实则失败

    mysql myisam存储引擎不能添加外键,添加后显示成功,实则失败. 添加显示成功后,可以轻松删除父表.

  8. c mysql 统计不重复数据库,MySQL_MySQL数据库中分组统计的问题,首先准备四张表A、B、C、D, - phpStudy...

    MySQL数据库中分组统计的问题 首先准备四张表A.B.C.D, -------------------------------- A      | B | C   | D a   b   |   a ...

  9. mysql分组查询后插入新表,MySQL获取分组后的TOP 1和TOP N记录

    有时会碰到一些需求,查询分组后的最大值,最小值所在的整行记录或者分组后的top n行的记录,在一些别的数据库可能有窗口函数可以方面的查出来,但是MySQL没有这些函数,没有直接的方法可以查出来,可通过 ...

  10. 零基础带你学习MySQL—分组统计(十二)

    零基础带你学习MySQL-分组统计(十二) 如何理解分组 ? 课后练习题

最新文章

  1. 初中计算机教师资格考试试题,2017下半年初中信息技术教师资格证面试试题(精选)第一批(2)...
  2. shell随机数及按行切割文件
  3. 【JavaScript】apply和call的区别在哪?
  4. 前端学习(1302):实现es6的转化
  5. 1.1.2-学习Opencv与MFC混合编程之---画图工具 画直线 画圆 画矩形
  6. phpstudy配置oracle,phpStudy配置sql、oracle---博主摘录
  7. 基于ricequant隐马尔科夫模型量化交易
  8. c语言编程串行静态数码显示实验,十天学会单片机和C语言编程-数码管动态扫描显示.ppt...
  9. Flex布局应用---导航栏实现
  10. 《缠中说禅108课》37:背驰的再分辨
  11. 金彩教育:店铺运营怎么看数据
  12. 2023年CISSP考点及预约时间参考
  13. find()函数详解
  14. 在论文中加入背景音乐,为苦涩的论文添加一点调味剂
  15. 【周赛】第一周周赛——欢迎16级的新同学题解(题目出自codeforces 318A,546A,431C,665E,HDU 4104)
  16. 踏山河各种版本,求各位小伙伴点个关注
  17. 一次性弄清 高通骁龙芯片最新产品线简介
  18. blinker控制步进电机起保停,正反转,加减速(Arduino uno+esp8266+TB6600驱动器)
  19. 小米无线路由器关闭WPS
  20. 变压器励磁电感以及漏感

热门文章

  1. 前端面试宝典-技巧篇
  2. 财务数字变革新契机丨RPA应用于财务领域的5大场景
  3. ACM 算法详细分类
  4. 【课程·研】高性能计算机网络 | 学堂在线习题解答:期末考试
  5. html网页url伪静态,动态url 静态url 伪静态url页面的区别
  6. Repast——参数栏实现下拉列表对应不同的功能实现
  7. 《机器人学基础》整理(1)
  8. javascript之广告效果
  9. 3.1_21 JavaSE入门 P20 【正则】Pattern模式类、Matcher匹配器、元字符、分组捕获、反向引用
  10. Java 下载并安装JDK7u80