您的位置:首页 > 编程语言 > PHP开发

php+mysql按月统计一年内注册人数

2018-03-05 19:29 309 查看
首先业务需求是统计一年内(截止到当前时间)每个月的注册人数,而且没有人注册的月份也要显示,并显示注册人数为0
这里封装好的函数,执行原生sql语句查询,用框架也是一样的



这是查询到的结果集,可以看到注册人数为0的月份是不显示的,不符合业务需求,前端也表示无法处理



这里通过循环上面的结果集,把没有数据的月份补全



这里是最后的结果,符合需求,这样返给前端,他们就能愉快的循环了...



当然会有更好的方法,希望大家多多指教,下面附上代码
function count(){

JXMySQL_Execute("SELECT DATE_FORMAT(FROM_UNIXTIME(reg_time),'%Y%m') AS month,COUNT(*) AS num
FROM pt_user
WHERE `reg_time`
BETWEEN UNIX_TIMESTAMP(now()) - 31556926
AND UNIX_TIMESTAMP(now())
GROUP BY month");
$arr = JXMySQL_Result();
$today = date('m');
$res = [];
foreach ($arr as $key => $val) {
$res[$val['month']] = $val['num'];
}
$ext = date('Y');
for ($i=1; $i < 13; $i++) {
if($today < 10){
if($i < 10 && $i >$today) $key = ($ext-1).'0';
elseif($i >= 10) $key = $ext-1;
else $key = $ext.'0';
if(!array_key_exists($key.$i,$res)){
$res[$key.$i] = 0;
}
}else{
if($i > $today) $key = $ext-1;
elseif($i >= 10 && $i <= $today) $key = $ext;
else $key = ($ext).'0';
if(!array_key_exists($key.$i,$res)){
$res[$key.$i] = 0;
}
}

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php mysql 统计 按月