我有这样的 SQL(其中$ytoday
是 5 天前):
$sql = 'SELECT Count(*), created_at FROM People WHERE created_at >= "'. $ytoday .'" AND GROUP BY DATE(created_at)';
我希望它每天返回一个值,因此在这种情况下它将返回 5 个结果(5 天前到今天)。
But say Count(*)
昨天为 0,它不会返回该日期的任何数据,而不是返回零。
如何更改该 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)