SQL代码两次捕获贡献

时间:2017-08-19 22:47:46

标签: mysql

以下代码为从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日不会计数)。

如何修改代码?

1 个答案:

答案 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;

Sample SQL Fiddle