我正在分析Web应用程序中的短信数据,我该如何选择每个月的最近三个月发生的失败短信以及最近三个月的第一个月和第三个月以及最后三个月的最后两个月
我只能通过此查询选择过去三个月中所有失败的短信
set.seed(123)
df <- data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10), random = 1:10)
我希望输出结果能够具体说明过去三个月内失败的短信,这些短信每月发生一次,并且发生在最近三个月的第一个月和第三个月,以及最后三个月的第二个月和第三个月
答案 0 :(得分:-1)
如果-对于每个phone
-您想知道过去三个月中每个月有多少次失败,则可以执行以下操作:
SELECT phone, SUM(status = 'failed') as total_failed,
SUM( status = 'failed' AND MONTH(dte) = MONTH(CURDATE()) ) as failed_month_0,
SUM( status = 'failed' AND MONTH(dte) = MONTH(CURDATE() - INTERVAL 1 MONTH) ) as failed_month_1,
SUM( status = 'failed' AND MONTH(dte) = MONTH(CURDATE() - INTERVAL 2 MONTH) ) as failed_month_2,
SUM( status = 'failed' AND MONTH(dte) = MONTH(CURDATE()) - INTERVAL 3 MONTH) as failed_month_3
FROM testdte
WHERE dte >= CURDATE() + INTERVAL (1 - Day( CURDATE() )) DATE - INTERVAL 3 MONTH AND
dte < CURDATE()
GROUP BY phone
ORDER BY phone;
请注意,COUNT( status = 'failed' )
不对失败状态进行计数。它计算status
不是NULL
的任何行。您想使用SUM()
来获取计数。