如何在单个查询中将过去三个月的数据统计为单独计算?

时间:2016-05-26 09:51:52

标签: mysql sql

我想了解过去三个月的所有评估。所以这应该算作当前和前两个月的单独

像本月的Count1 50一样      计数2 100一个月回来      两个月后计数2 50

SELECT Count(AssessmentID)
from AssessmentListing
WHERE (STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p') >= 
          DATE_FORMAT(NOW(), '%Y' ))

2 个答案:

答案 0 :(得分:0)

与评论中提及的@Jarlh一样,您可以使用“提取”功能从日期列中提取月份,并使用该值对结果进行分组。

select EXTRACT(MONTH FROM AssessmentSubmittedDatetime) as _month,
       Count(AssessmentID)
from AssessmentListing
WHERE (STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p') >= 
          DATE_FORMAT(NOW(), '%Y' ))
group by _month

答案 1 :(得分:0)

您不应将日期存储为字符串。如果你想要当前的月份和两个月,那么就像这样:

SELECT DATE_FORMAT(STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p'), '%Y-%m') as yyyymm,
       Count(*)
from AssessmentListing
WHERE STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p') >= DATE_SUB(DATE_SUB(CURDATE(), INTERVAL 1 - DAY(CURDATE()), INTERVAL 2 MONTH)
GROUP BY yyyymm;

我不确定你的WHERE条实际上是做什么的。但是比较字符串和日期可能不是你真正想要的。