根据日期选择仅在上个月的每三个月出现一次的数据,也仅选择在上个月的前三个和最后三个月出现的数据

时间:2019-08-31 09:08:35

标签: mysql sql

我正在分析Web应用程序中的短信数据,我该如何选择每个月的最近三个月发生的失败短信以及最近三个月的第一个月和第三个月以及最后三个月的最后两个月

我只能通过此查询选择过去三个月中所有失败的短信

set.seed(123)
df <- data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10), random = 1:10)

我希望输出结果能够具体说明过去三个月内失败的短信,这些短信每月发生一次,并且发生在最近三个月的第一个月和第三个月,以及最后三个月的第二个月和第三个月

1 个答案:

答案 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()来获取计数。

相关问题