我有一个名为“users”的表,其中用户注册并且注册日期保存为“created_on”。 我想写一个查询,显示2017年3月1日至2017年6月15日期间每天有多少用户在我们的网站上注册。
不幸的是我不能。
结果显示如下:
Date Count
01-03-2017 232
02-03-2017 422
03-03-2017 531
...
答案 0 :(得分:2)
这个问题是日历表派上用场的一个很好的例子。在下面的查询中,我假设存在一个包含2017年3月1日至2017年6月15日所有日期的表格。此表格的内联形式如下所示:
SELECT '2017-03-01' AS Date UNION ALL
SELECT '2017-03-02' UNION ALL
-- ...
SELECT '2017-06-15'
假设您有一个日历表,您可以将其连接到当前表以获取计数:
SELECT
c.Date, COUNT(t.created_on) AS signup_count
FROM calendar c
LEFT JOIN yourTable t
ON c.Date = t.created_on
GROUP BY Date
请注意,此处可能需要日历表,因为可能有几天没有人注册。在这种情况下,原始表本身不包含足够的信息来生成您期望的输出。
答案 1 :(得分:1)
SELECT created_on,COUNT(*)
FROM users
WHERE created_on BETWEEN '2017-03-01' AND '2017-06-15'
GROUP BY DATE(created_on)
尝试以上查询。
希望这会对你有所帮助。