如何解决用MySQL GROUP BY表达式计数时如何包括零
| 我想统计过去一个月每天发生的事件数,但是如果没有发现任何事件,也要计为零。那可能吗? 这就是我从...开始SELECT COUNT(*) AS count,DATE(usage_time_local) AS d
FROM usages
WHERE user_id=136
AND DATE(usage_time_local) >= DATE(\'2011-04-24\')
AND DATE(usage_time_local) <= DATE(\'2011-05-24\')
GROUP BY DATE(usage_time_local);
更新:给定答案,我通过初始化循环然后填充细节来实现代码解决方案。
$dailyCount = array();
for( $i=1; $i<=30; $i++ ) {
$day = date(\'Y-m-d\',(time()-($i*24*60*60)));
$dailyCount[$day] = 0;
}
foreach( $statement as $row ) {
$dailyCount[$row[\'d\']] = $row[\'count\'];
}
解决方法
您无法使用标准SQL查询来执行此操作-您将试图对表中不存在的日期进行分组。
标准的解决方法是制作一个临时表,该表以连续的顺序包含日期范围,且没有间隔,将其与表连接起来,然后照常进行计数/汇总。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。