mysql按时间统计数据,没有数据的时候自动补充0

1.数据库中选择任意一个有数据的表,例如我选择的是 shopping_user 表

SELECT
    @cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) `date`,
    0 AS `sum`
FROM
    ( SELECT @cdate := DATE_ADD( CURDATE( ), INTERVAL + 1 DAY ) FROM shopping_user ) t1
WHERE
    @cdate > ‘2017-08-03‘

选择一统计时间开始时间,我的开始时间选择的是2017-08-03,结束时间默认是当前日期。

2.将自己要统计的数据,按我们自己的要求写出来,当然此时,肯定显示的都是有数据的记录统计结果:

我这是查询的shopping_hibitRecord 按照ADDTIME 统计的条数

SELECT
        DATE_FORMAT( ADDTIME, ‘%Y-%m-%d‘ ) AS `date`,
        COUNT( * ) AS ‘sum‘
    FROM
        `shopping_hibitRecord`
    WHERE
        shopping_hibitRecord.`ADDTIME` >= ‘2017-08-03‘
        AND deleteStatus = FALSE
        AND TYPE = 0
    GROUP BY
        DATE DESC   

此时没有记录的时间,就没有展示在结果中。

3.联合查询将没有记录的时间补0

SELECT
    `date`,
    MAX( `sum` ) AS `sum`
FROM
    (
    SELECT
        @cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) `date`,
        0 AS `sum`
    FROM
        ( SELECT @cdate := DATE_ADD( CURDATE( ), INTERVAL + 1 DAY ) FROM shopping_hibitRecord ) t1
    WHERE
        @cdate > ‘2017-08-03‘ UNION ALL
    SELECT
        DATE_FORMAT( ADDTIME, ‘%Y-%m-%d‘ ) AS `date`,
        COUNT( * ) AS ‘sum‘
    FROM
        `shopping_hibitRecord`
    WHERE
        shopping_hibitRecord.`ADDTIME` >= ‘2017-08-03‘
        AND deleteStatus = FALSE
        AND TYPE = 0
    GROUP BY
        DATE DESC
    ) _tmpAllTable
GROUP BY
    `date` DESC

上面要求1、2 的记录条数字段名字一样,我选择的都是 sum

结果就是没有数据的时间补上数据0了

总结:当然还有别的方法,不过这个方法不用创建任何的存储过程,是相对来说简单一点的

原文地址:https://www.cnblogs.com/wyf-love-dch/p/11072931.html

时间: 2024-10-09 01:00:01

mysql按时间统计数据,没有数据的时候自动补充0的相关文章

MySQL按时间统计每个小时记录数

MySQL按时间统计每个小时记录数 方案1: ? 1 2 3 4 5 6 7 SELECT  @rownum := @rownum + 1 AS ID,         CONCAT((CASE WHEN t.hour = 24 THEN 0 ELSE t.hour END),':00:00') AS TIME, COUNT(*) AS COUNT FROM (SELECT id, HOUR(DATE_FORMAT(createtime,'%H:%i:%s'))+1 AS HOUR FROM b

转:mysql按时间统计数据,没有数据的时候自动补充0

1.数据库中选择任意一个有数据的表,例如我选择的是 shopping_user 表 SELECT @cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) `date`, 0 AS `sum` FROM ( SELECT @cdate := DATE_ADD( CURDATE( ), INTERVAL + 1 DAY ) FROM shopping_user ) t1 WHERE @cdate > '2017-08-03' 选择一统计时间开始时间,我的开始时间

mysql根据时间统计数据语句

select FROM_UNIXTIME(`createtime`, '%Y年%m月%d日')as retm,count(*) as num  from `user` GROUP BY retm select FROM_UNIXTIME(`pay_tm`, '%Y/%m/%d::')as retm,sum(price)+sum(express_price) as num from `order_orderlist` GROUP BY retm; select FROM_UNIXTIME(`pay

Python+Mysql生成zabbix统计数据

先大概了解一下zabbix数据库结构: 1.groups表 可以根据组名查到组ID 2.找到组ID就可以根据组ID找出这个组下面的所有服务器的ID,这个关系在hosts_groups表里面: 3.有了hostid就可以在hosts表里查看这台机器的基本信息了: items表则可以根据hostid查出这台服务器的所有监控项: 4.终于在items表查到itemid,利用这个itemid在trends和trends_uint这两个表中统计出我们需要的数据 我python水平挺菜的,很多面向对象的功能

Python+Mysql生成zabbix统计数据(优化)

周末重新整理了一下,把有些不合理的地方改了下,自我感觉好多了 ZabbixReport.py #!/usr/bin/python #coding:utf-8 import MySQLdb import time,datetime #zabbix数据库信息: zdbhost = '192.168.1.100' zdbuser = 'zabbix' zdbpass = 'zabbixreport' zdbport = 3306 zdbname = 'zabbix' #生成文件名称: xlsfilen

mysql根据时间查询前一天数据

MySql数据库如何根据时间查询前一天的数据?本文整理了几个解决方法,有需要的朋友参考下. 本节内容:用MySql怎么根据时间查询前一天的数据. 例1: 代码示例: select * from tt where f1=DATE_ADD(now(),INTERVAL -1 day) 例2: 代码示例: select * from tt where f1 between DATE_SUB(curdate(), INTERVAL 1 DAY) and current_date(); 例3,mysql时

mysql定时删除当前时间前分钟的数据

mysql定时删除当前时间前分钟的数据 2013-01-31      0个评论       作者:上官车月 收藏    我要投稿 mysql定时删除当前时间前分钟的数据 Sql代码  www.2cto.com SET GLOBAL event_scheduler = ON; delimiter $$ drop event if exists e_wom_stat; create event e_wom_stat on schedule EVERY 1 day STARTS '2013-01-0

使用nginx lua实现网站统计中的数据收集

使用nginx lua实现网站统计中的数据收集 导读 网站数据统计分析工具是各网站站长和运营人员经常使用的一种工具,常用的有 谷歌分析.百度统计和腾讯分析等等.所有这些统计分析工具的第一步都是网站访问数据的收集.目前主流的数据收集方式基本都是基于javascript的.在此简要分析数据收集的原理,并按照步骤,带领大家一同搭建一个实际的数据收集系统. 数据收集原理分析 简单来说,网站统计分析工具需要收集到用户浏览目标网站的行为(如打开某网页.点击某按钮.将商品加入购物车等)及行为附加数据(如某下单

网站统计中的数据收集原理及实现

转载自:http://blog.sina.com.cn/s/blog_62b832910102w5mx.html Avinash Kaushik将点击流数据的获取方式分为4种:log files.web beacons.JavaScript tags和packet sniffers,其中包嗅探器(packet sniffers)比较不常见,最传统的获取方式是通过WEB日志文件(log files):而beacons和JavaScript是目前较为流行的方式,Google Analytics目前就