为了账号安全,请及时绑定邮箱和手机立即绑定

使用Mysql 统计一周数据,若没有数据显示为0

使用Mysql 统计一周数据,若没有数据显示为0

PHP
慕容森 2019-03-11 13:27:11
SELECT time,count(*) as count FROM share WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAY)<DATE(time) GROUP BY time 像这样,查出近七天的数据了,但是中间没有6和7号的,我要怎么写可以把6号7号的补充为0
查看完整描述

5 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

这样的话,你没数据的时候也得生成一条,这样count才能统计的出来吧

查看完整回答
反对 回复 2019-03-18
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

建立一个临时的连续日期表,再进行联表查询

查看完整回答
反对 回复 2019-03-18
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

我每次做这种是 先PHP生成本周数据 值都为0
再查询数据库 再合并
主要就是range + array_fill + array_combine 之后再合并或者循环替换值

$end_time = strtotime(date("Y-m-d"));
$begin_time = strtotime(date("Y-m-d", strtotime("-1 week +1 day", $end_time)));

$keys = array_map(function ($time) {
    return date("Y-m-d", $time);
}, range($begin_time, $end_time, 24 * 3600));

$initData = array_combine($keys, array_fill(0, count($keys), 0));

我觉得最好的方式应该是添加一个数字辅助表连查 虽然我不会用...

PS:这样写真的挺麻烦的, 做统计图表的时候又需要这些值 暂时没找到简单点的方法

查看完整回答
反对 回复 2019-03-18
?
MMTTMM

TA贡献1869条经验 获得超4个赞

Db::name("数据库名")->where(查询条件)->whereTime('字段','week')->count();

查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 2840 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信