mysql with roll up_GROUP BY...WITH ROLL UP 分组统计后的再合计
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 分组统计后的再合计相关推荐
- Mysql按日、周、月进行分组统计
我们在用Mysql抽取数据时候,经常需要按照天.周.月等不同的粒度对数据进行分组统计.而我们的时间可能是"2017/12/5 0:0:0"这种准确的时间.所以在进行分组之前我们需要 ...
- mysql date_format 按不同时间单位进行分组统计
DATE_FORMAT(date,format) 根据format字符串格式化date值.下列修饰符可以被用在format字符串中: %M 月名字(January--Decembe ...
- mysql 日期group_MySql 使用GROUP BY 按照日期分组统计
SELECT DATE_FORMAT(时间字段名,'%Y-%m-%d'),count(*) FROM table where 条件 GROUP BY DATE_FORMAT(时间字段名,'%Y-%m- ...
- mysql 存储过程无效_用VC通过DLL包连接MySQL,执行存储过程后,再执行其他查询无效?解决方法...
用VC通过DLL包连接mysql,执行存储过程后,再执行其他查询无效? MYSQL mysql; mysql_init(&mysql); mysql_real_connect(&mys ...
- MySQL 数据库常用命令—where like union 排序 分组 连接
引言 本篇博客对 MySQL 数据库的一些命令进行分享. where 语句 基本语法规则: select field1, field2,...fieldN from table_name1, tabl ...
- mysql十分钟分组_MYSQL每隔10分钟进行分组统计的实现方法
前言 本文的内容主要是介绍了mysql每隔10分钟进行分组统计的实现方法,在画用户登录.操作情况在一天内的分布图时会非常有用,之前我只知道用「存储过程」实现的方法(虽然执行速度快,但真的是太不灵活了) ...
- mysql myisam存储引擎不能添加外键,添加后显示成功,实则失败
mysql myisam存储引擎不能添加外键,添加后显示成功,实则失败. 添加显示成功后,可以轻松删除父表.
- c mysql 统计不重复数据库,MySQL_MySQL数据库中分组统计的问题,首先准备四张表A、B、C、D, - phpStudy...
MySQL数据库中分组统计的问题 首先准备四张表A.B.C.D, -------------------------------- A | B | C | D a b | a ...
- mysql分组查询后插入新表,MySQL获取分组后的TOP 1和TOP N记录
有时会碰到一些需求,查询分组后的最大值,最小值所在的整行记录或者分组后的top n行的记录,在一些别的数据库可能有窗口函数可以方面的查出来,但是MySQL没有这些函数,没有直接的方法可以查出来,可通过 ...
- 零基础带你学习MySQL—分组统计(十二)
零基础带你学习MySQL-分组统计(十二) 如何理解分组 ? 课后练习题
最新文章
- 初中计算机教师资格考试试题,2017下半年初中信息技术教师资格证面试试题(精选)第一批(2)...
- shell随机数及按行切割文件
- 【JavaScript】apply和call的区别在哪?
- 前端学习(1302):实现es6的转化
- 1.1.2-学习Opencv与MFC混合编程之---画图工具 画直线 画圆 画矩形
- phpstudy配置oracle,phpStudy配置sql、oracle---博主摘录
- 基于ricequant隐马尔科夫模型量化交易
- c语言编程串行静态数码显示实验,十天学会单片机和C语言编程-数码管动态扫描显示.ppt...
- Flex布局应用---导航栏实现
- 《缠中说禅108课》37:背驰的再分辨
- 金彩教育:店铺运营怎么看数据
- 2023年CISSP考点及预约时间参考
- find()函数详解
- 在论文中加入背景音乐,为苦涩的论文添加一点调味剂
- 【周赛】第一周周赛——欢迎16级的新同学题解(题目出自codeforces 318A,546A,431C,665E,HDU 4104)
- 踏山河各种版本,求各位小伙伴点个关注
- 一次性弄清 高通骁龙芯片最新产品线简介
- blinker控制步进电机起保停,正反转,加减速(Arduino uno+esp8266+TB6600驱动器)
- 小米无线路由器关闭WPS
- 变压器励磁电感以及漏感