以下代码为从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日不会计数)。
如何修改代码?
答案 0 :(得分:2)
您应该使用datediff function计算第一个和最后一个时间戳之间的天数差异,从而得到您想要的结果,如下所示:
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;