我有这样的SQL($ytoday5天前在哪里):
$ytoday
$sql = 'SELECT Count(*), created_at FROM People WHERE created_at >= "'. $ytoday .'" AND GROUP BY DATE(created_at)';
我希望它每天返回一个值,因此在这种情况下(5天前到今天)它将返回5个结果。
但是,如果说Count(*)昨天是0,则不会返回该日期的所有数据,而是返回零。
Count(*)
如何更改该SQLite查询,使其还返回计数为0的数据?
如果不进行复杂的查询(我认为),您的输出数据集将不包含输入数据集中不存在的日期。这意味着您需要一个5天的数据集才能加入。
简单的版本是用5个日期创建一个表,然后加入该表。我通常会创建并保留 (有效地缓存) 日历表以及我可能需要的每个日期。 (例如从1900-01-01到2099-12-31。)
SELECT calendar.calendar_date, Count(People.created_at) FROM Calendar LEFT JOIN People ON Calendar.calendar_date = People.created_at WHERE Calendar.calendar_date >= '2012-05-01' GROUP BY Calendar.calendar_date