Mysql 如何在SQL中计算频率
我需要了解如何计算一个帐户在7天时间戳内重复的频率。例如:2/3/15 3:47到2/4/15 4:34下午在7天内,因此第一次出现的时间为0,相同7天内的第二次出现的时间为1,相同7天内的第三次出现的时间为2,依此类推 使用用户定义的变量来跟踪1周间隔的开始和一周内的计数器。当创建日期超过1周时,重置变量Mysql 如何在SQL中计算频率,mysql,Mysql,我需要了解如何计算一个帐户在7天时间戳内重复的频率。例如:2/3/15 3:47到2/4/15 4:34下午在7天内,因此第一次出现的时间为0,相同7天内的第二次出现的时间为1,相同7天内的第三次出现的时间为2,依此类推 使用用户定义的变量来跟踪1周间隔的开始和一周内的计数器。当创建日期超过1周时,重置变量 Creation Date Account Number FREQUENCY - 7 2/3/15 3:47 PM 7522461
Creation Date Account Number FREQUENCY - 7
2/3/15 3:47 PM 7522461 0
2/4/15 9:25 AM 7522461 1
2/4/15 4:34 PM 7522461 2
2/23/15 3:08 PM 7522461 0
3/4/15 9:58 AM 7522461 0
3/4/15 4:55 PM 7522461 1
3/5/15 2:27 PM 7522461 2
3/6/15 7:28 AM 7522461 3
3/6/15 1:33 PM 7522461 4
3/9/15 8:51 AM 7522461 5
如果是MSSQL,请尝试以下操作
SELECT CreationDate, AccountNumber,
@frequency := IF(CreationDate > DATE_ADD(@startdate, INTERVAL 7 DAY), 0, @frequency + 1) AS Frequency,
@startdate := IF(CreationDate > DATE_ADD(@startdate, INTERVAL 7 DAY), CreationDate, @startDate)
FROM (SELECT CreationDate, AccountNumber
FROM YourTable
ORDER BY CreationDate) AS x
CROSS JOIN (SELECT @startdate := DATE('1900-01-01'), @frequency := 0) AS vars
如果数据不清楚,我可以通过电子邮件发送表格。你会将其发送到哪里?看起来你只需要根据两个日期之间的条件进行计数。或者差异小于7天。Msg 102,级别15,状态1,第2行“:”附近的语法不正确。Msg 137,级别15,状态2,第2行必须声明标量变量@startdate。Msg 137,级别15,状态2,第3行必须声明标量变量@startdate。Msg 156,15级,状态1,第6行关键字“ORDER”附近语法不正确。Msg 102,级别15,状态1,第7行“:”附近的语法不正确。这些看起来不像MySQL错误消息。您确定这就是您正在使用的RDBMS吗?Msg 174,级别15,状态1,第3行datediff函数需要3个参数。-错误是MySQL还是MSSQL服务器?
SELECT CreationDate, AccountNumber,
(SELECT COUNT(*)
FROM YourTable t2
WHERE (DATEDIFF(day, t2.CreationDate, t1.CreationDate ) < 7 AND
(DATEDIFF(day, t2.CreationDate, t1.CreationDate) > 0 OR
(DATEDIFF(day, t2.CreationDate, t1.CreationDate) = 0
AND DATEDIFF(second, t2.CreationDate, t1.CreationDate) > 0
)
)
)
AND t2.AccountNumber = t1.AccountNumber)
FROM YourTable t1
order by AccountNumber, CreationDate