私のテーブル構造は次のようでした
CREATE TABLE `survey` (
`id` int(11) NOT NULL auto_increment,
`submitdate` datetime default NULL,
`answer` varchar(5) collate utf8_unicode_ci default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=499 ;
ここで、過去10日間のレコードを計算したいと思います。特定の日にレコードがないとします。ゼロである必要があります。
出力は次のようになります
date count
19-11-2012 10
18-11-2012 30
13-11-2012 0
.
.
私は次のようなクエリを使用しました
SELECT COUNT( * ) , DATE( submitdate )
FROM survey t
WHERE t.submitdate >= ( CURDATE( ) - INTERVAL 10
DAY )
GROUP BY DATE( submitdate )
LIMIT 0 , 30
出力は
count(*) date(submitdate)
1 2012-11-13
2 2012-11-14
1 2012-11-15
3 2012-11-16
6 2012-11-17
日付のあるレコードがない場合は0を指定しません。