【问题标题】:SQL code to capture contributions on two occasions两次捕获贡献的 SQL 代码
【发布时间】:2017-08-20 07:18:29
【问题描述】:

以下代码提供了在 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 日则不计入计数)。

如何修改代码?

【问题讨论】:

  • 提供样本数据和基于它的期望输出。

标签: mysql


【解决方案1】:

您应该通过使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    相关资源
    最近更新 更多