php+mysql统计7天、15天、30天没有补0;

先来看效果图

问题描述

查询数据库表中最近7天的记录

select count(id) count,FROM_UNIXTIME(dateline, '%m-%d') AS datetime from ymf_video_tongji WHERE dateline > UNIX_TIMESTAMP(date_sub(curdate(), interval 30 day)) group by datetime;

但是发现某一天没有数据,结果中没有最近30天每天的数据,只显示了有时间的 11行

解决思路

首先网上查询了一下

方法一(不推荐):Mysql 构建一个最近七天的结果集,然后和查询的结果集合做left join

查询一个最近7天的数据,没有补零,语句如下:

select a.click_date,ifnull(b.count,0) as count
from (
SELECT curdate() as click_date
union all
SELECT date_sub(curdate(), interval 1 day) as click_date
union all
SELECT date_sub(curdate(), interval 2 day) as click_date
union all
SELECT date_sub(curdate(), interval 3 day) as click_date
union all
SELECT date_sub(curdate(), interval 4 day) as click_date
union all
SELECT date_sub(curdate(), interval 5 day) as click_date
union all
SELECT date_sub(curdate(), interval 6 day) as click_date
) a left join (
select FROM_UNIXTIME(dateline, '%m-%d') AS datetime, count(*) as count
from ymf_video_tongji WHERE dateline > UNIX_TIMESTAMP(date_sub(curdate(), interval 6 day))
group by datetime
) b on a.click_date = b.datetime ORDER BY click_date DESC ;

上面的语句虽然可以查询出最近7天的数据,但是有个问题。

如果我们要做最近90天的查询怎么办?

那就要union all很多个,显示不是我们想要的结果

方法二(我们推荐这个)用PHP进行处理

$day为变量,这个日期我们可以定义,比如最近7天 $day为7就可以了,最近30天$day为30就可以了

$day = 30 ;
for ($i = $day - 1; 0 <= $i; $i--) {
$result[] = date('m-d', strtotime('-' . $i . ' day'));
$nums[] = 0;
}

这里我们构造最近30天数据,$day = 30

就会得到两个集合 $result 日期集合 $nums 日期对应数量集合

接下来利用array_walk进行循环,没有的补领

$scan_qushi 是我们运用最开始查询7天的那个数据查询方式查询出来近30天的数据(存在没有的)

array_walk($scan_qushi, function ($value, $key) use ($result, &$nums) {
$index = array_search($value['datetime'],$result);
$nums[$index] = $value['count'];
});
$data = [
'day' => $result,
'nums' => $nums
];

$result 日期 $nums 日期对应的数量,到此,我们完美的取出来了最近30天的数据。并且进行输出。

$data = [
'day' => $result,
'nums' => $nums
];

这样就可以交给echart工具进行数据展示了

php+mysql统计7天、30天每天数据没有补0相关推荐

  1. mysql统计每半小时内的数据(查寻某段时间内的数据)

    mysql统计每半小时内的数据(查寻某段时间内的数据) 表结构 sql展示 sql说明 结果展示 思考 需求:统计某段时间内的数据,以半小时为单位统计 表结构 sql展示 SELECT @rank:= ...

  2. Mysql统计近6个月的数据,无数据的填充0

    之前写过一遍文章,记录了Mysql统计近30天的数据,无数据填0的方式.主要思路就是利用mysql中的函数,生成一列30天的日期格式的数据,在通过这张临时表的数据去左关联我们的业务数据,由于用的是左关 ...

  3. MySql 统计最近 6 个月内的数据,没有数据默认为显示为 0

    在做报表数据统计的时候,用一个折线图用来显示并统计最近 6 个月内的数据结算情况.为了前端小伙伴方便处理数据,需要将没有数据的月份默认填充为 0. 网上查了很久,最终找到了解决办法,写出来分享一下,希 ...

  4. MySQL 统计过去12个月的数据(包括本月)

    1.问题 需要统计过去12个月的数据,如现在是2015年4月,那么我们需要统计从2014年5月到2015年4月的数据情况.而这12个月中,如果这个月没有数据的,则统计为0. 原始数据表如下图,数据是按 ...

  5. mysql统计近n天每天的数据量

    第一步 查询近n天的日期(以查询最近七天为例) SELECT@s :=@s + 1 AS _index,DATE(DATE_SUB(CURRENT_DATE, INTERVAL @s DAY)) AS ...

  6. Mysql统计每个小时或半小时数据的数量

    Mysql 查询一天中,每个小时数据的数量 Mysql 查询一天中每半小时记录的数量

  7. mysql统计一年12月的数据

    效果图: select sum(case month(createTime) when '1' then 1 else 0 end) as 一月份, sum(case month(createTime ...

  8. mysql 7天自动拒单功能,mysql查询最近7天的数据,没有数据自动补0

    select DATE( createtime) date , createtime, count(1) as count   from  order表  where DATEDIFF( now(), ...

  9. mysql查询最近7天的数据,没有数据自动补0

    问题描述 查询数据库表中最近7天的记录 select count(*),date(create_time) as date from task where datediff(now(),create_ ...

最新文章

  1. BitmapFactory.Options.inSampleSize 的使用方法
  2. OSI 七层参考模型
  3. mysql对其他IP授权访问
  4. VC6安装错误——Error Launching acmboot.exe
  5. 审车按月还是日期_@老司机,你该审车了,秒懂的审车攻略,快快揣口袋吧
  6. C/C++搞不懂指针还是数组?用sizeof解释struct大小!
  7. 7.3联盟最多的服务器,1.7.3 超级服务器inetd和xinetd
  8. 冰原服务器维护,12月2日服务器公告:冰原旅途进发
  9. python3 中bytes与str类型
  10. 增加一个输出,解决一个奇怪的死机
  11. 开机广播没反映_我州首部反映脱贫攻坚成效的电影《冲锋号》在鹤峰开机
  12. 在php中使用for、while、do-while循环实现从1加到100
  13. bt python_bt宝塔 安装个python失败? 阿里云轻量香港
  14. Android版本名称
  15. 就是上来吐槽一下树莓派上,编译个模块都过不去的郁闷。 欢迎使用CSDN-markdown编辑器
  16. PS四种扁平化设计风格-网摘
  17. 毕业设计 大数据B站数据分析与可视化 - python 数据分析 大数据
  18. 磁悬浮matlab,磁悬浮小球matlab
  19. python:for循环和range()函数用法
  20. python 爬虫 requests+BeautifulSoup 爬取巨潮资讯公司概况代码实例

热门文章

  1. this的指向问题总结
  2. java实现简单的文件下载
  3. Excalidraw:开源趣味画图工具(在线和本地均可)
  4. 宝塔面板怎么实名认证_云服务器安装宝塔面板完整教程
  5. UnityHub打开黑屏的解决方法
  6. #猜数游戏 之心中无女人猜数自然神,你能一次猜对吗?
  7. Android-----将 Ijkplayer 集成到Android Studio中(一)
  8. 禅道 php7.1,Centos7安装PHP7 + 禅道(Nginx 1.18 + PHP7.2)
  9. 禅道开源版16.2,解决LDAP插件无法使用的问题
  10. 计算机体系结构--进制及其运算