0

我必须分别找出过去 4 个月的 tot(count) 值,我该如何做到这一点

表结构是

CREATE TABLE `lime_survey_16579` ( 
`id` int(11) NOT NULL auto_increment, 
`submitdate` datetime default NULL, 
`lastpage` int(11) default NULL, 
`startlanguage` varchar(20) collate utf8_unicode_ci NOT NULL, 
`token` varchar(36) collate utf8_unicode_ci default NULL, 
`16579X10X31` varchar(5) collate utf8_unicode_ci default NULLPRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=480 ; 

这里 $survey =lime_survey_16579 和 $temp= 16579X10X31 这里 16579X10X31 的值类似于 A1 A2 A3 ..

我怎样才能做到这一点以提供输出

tot month 

2 july 
4 aug 
6 sep 
9 oct 

有谁能够帮我?

4

2 回答 2

1

请尝试以下所有数据:

SELECT count(id) as tot, MONTHNAME(submitdate) as `month`
FROM lime_survey_16579
GROUP BY month(submitdate) 
ORDER BY month(submitdate)

要将数据限制为过去 4 个月,请尝试以下操作:

SELECT count(id) as tot, MONTHNAME(submitdate) as `month`
FROM lime_survey_16579
GROUP BY month(submitdate) 
ORDER BY month(submitdate) DESC
LIMIT 4
于 2012-10-22T03:37:03.280 回答
0

如果您有上一年的数据,Sel 的解决方案将不起作用。大概,您只想要最近的“七月”记录,而不是所有记录的总和。

为此,您可以执行以下操作:

SELECT count(id) as tot, MONTHNAME(submitdate) as `month`
FROM lime_survey_16579
GROUP BY monthname(submitdate), year(submitdate)
ORDER BY min(submitdate) DESC
LIMIT 4

您也可以选择将年份放在 SELECT 行上。

我用其他表达式替换month(submitdate)group byand子句。order by这避免了使用称为hidden column的 MySQL (mis) 功能,其中子句中未提及group by且未聚合的列在子句中被允许select。其他 SQL 引擎(以及标准)不允许这样做。

于 2012-10-22T18:36:09.990 回答