博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql生成连续的日期统计,没有结果的补充为0
阅读量:4185 次
发布时间:2019-05-26

本文共 1394 字,大约阅读时间需要 4 分钟。

需求

在项目开发中,需要根据日期生成最近一周或者一个月的用户使用情况。如何根据日期直接分组就会导致某个日期没有数据,导致统计时日期缺失。

根据日期分组统计

比如我要统计近7天的数据,根据日期分组统计,只能统计到有数据的日期记录

SELECT  DATE_FORMAT(create_time, '%y-%m-%d') createtime, count(1) totalFROM sys_cus  where del_flag = 0and DATE_SUB(date_format(NOW(),'%Y-%m-%d'),INTERVAL 7 DAY) < date_format(NOW(),'%Y-%m-%d')GROUP BY createtime

统计结果:

在这里插入图片描述

解决方案:

通过一个时间临时表来进行左连接关联。对记录为空的进行0补位。

select dts.createtime,IF (ps.total is NULL ,0,ps.total) toatal from        (select        @num := @num+1 rownum,        date_format(DATE_ADD(DATE_SUB(date_format(NOW(),'%y-%m-%d'),INTERVAL 7 DAY),INTERVAL 	@num DAY),'%y-%m-%d') createtime        from sys_cus , (select @num:=0) t        where  @num < 7        ) dts LEFT JOIN (SELECT  DATE_FORMAT(create_time, '%y-%m-%d') dfc, count(1) total        FROM sys_cus o where del_flag = 0        GROUP BY dfc )as ps        ON ps.dfc = dts.createtime        ORDER BY dts.createtime

统计结果:

在这里插入图片描述

@num 是mysql中的定义的变量。

@num := @num+1 相当于orace中的rownum ,伪劣。

(select @num:=0) t 初始 @num 为0

@num < 7 固定 列的大小。

上面的根据自己的数据库表,生成一个日期临时表,还是会有问题。只能根据表中的记录数来生成日期天数,如果数据小于所需要的日期天数,那就只能生成一部分日期天数。

select        @num := @num+1 rownum,        date_format(DATE_ADD(DATE_SUB(date_format(NOW(),'%y-%m-%d'),INTERVAL 20 DAY),INTERVAL @num DAY),'%y-%m-%d') createtime        from mysql.help_topic  , (select @num:=0) t        where  @num < 20

将上面这部分的sql代吗,将sys_cust替换为数据库的自带表mysql.help_topic做了替代。

有更好的解决办法欢迎评论区给出建议。

转载地址:http://mbfoi.baihongyu.com/

你可能感兴趣的文章
oracle中int与number的区别
查看>>
php不用jsonp也能跨域
查看>>
tableau
查看>>
Elasticsearch数据架构及基本特点
查看>>
Kafka 对比 ActiveMQ
查看>>
Elasticsearch的一些优化
查看>>
在eclipse中通过local的模式可以正确的调试hadoop2.2
查看>>
HDFS 常用的文件操作命令
查看>>
使用Hive如何和Hbase集成
查看>>
把eclipse中的hadoop项目,换了一个工作空间,再次启动任务时
查看>>
在Win上提交hadoop集群的作业
查看>>
JAVA IDE IntelliJ IDEA使用简介(一)—之界面元素
查看>>
GROUP BY与COUNT用法详解
查看>>
pgadmin
查看>>
Greenplum性能调优
查看>>
gp性能管理
查看>>
linux的清屏命令
查看>>
maven打jar包
查看>>
Win10系统ie浏览器打不开网页的2种解决方法
查看>>
自己搭建一套hadoop的运行环境
查看>>