以下代码提供了在 2016 年 3 月 1 日至 2017 年 2 月 28 日期间向在线社区贡献标签的用户。
SELECT userid, COUNT(*) AS tags
FROM tag_events
WHERE tstamp >= ‘2016-03-01’ AND tstamp <= ‘2017-03-01’
GROUP BY userid
ORDER BY tags DESC;
tag_events
是表,tstamp
是标签的时间戳,userid
是用户 ID,表中的每个条目都包含有关一个标签的信息。
我对在此期间内首次贡献至少在上次贡献前两个日历日的用户感兴趣(因此 7 月 1 日和 3 日将计算在内,7 月 1、2、3 日将计算在内,但 7 月 1 日和 2 日将不计算在内(。
如何修改代码?
您应该通过使用 datediff 函数计算第一个和最后一个时间戳之间的天数差来获得所需的结果,如下所示:
SELECT userid, COUNT(*) AS tags
FROM tag_events
WHERE tstamp >= '2016-03-01' AND tstamp <= '2017-03-01'
GROUP BY userid
HAVING DATEDIFF(MAX(tstamp), MIN(tstamp)) > 1
ORDER BY tags DESC;
示例 SQL 小提琴