1

私のテーブル構造は次のようでした

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 ;

ここで、過去 4 週間のレコード数を数えたいと思います。

1 つのことは、特定の週にレコードがないと仮定すると、0 としてリストする必要があります。

ここで出力例は次のようになります

count(*) week 
  0      mon-sun  //29 oct -  4 nov every week starts from monday and ends with sunday 
  4      mon-sun  //5 nov -  11 nov
  45     mon-sun  //12 nov -  18 nov  last week 
  0      mon-sun  //18 nov - 25 nov  latest week 

今日が月曜日であると仮定すると、週の範囲は最新の週の月曜日から日曜日に変更されます。

4

1 に答える 1

1

クエリは次のようになります。

SELECT
    s.id,
    DATE(DATE_SUB(s.submitdate,INTERVAL(DAYOFWEEK(s.submitdate) - 2) DAY)) AS weekStart,
    ADDTIME(SUBTIME(SUBDATE(s.submitdate,INTERVAL(DAYOFWEEK(s.submitdate) - 8)DAY),TIME(s.submitdate)),MAKETIME(23,59,59)) AS weekEnd,
    COUNT(*) AS total
FROM survey s
GROUP BY weekStart
LIMIT 0,3
于 2012-11-21T03:30:44.350 に答える