我有一张这样的表:
id | created_on
1 2013-09-03 20:05:09
2 2013-09-05 17:03:13
...
如何编写查询以7天的间隔返回从日期X到日期Y创建的记录计数结果?
所以结果看起来像这样:
count | created_on
4 2013-09-17 00:00:00
2 2013-09-24 00:00:00
1 2013-09-31 00:00:00
10 2013-10-07 00:00:00
...
答案 0 :(得分:3)
您可以通过减去星期几来转到本周初。这是一种方法:
select date(created_on - interval dayofweek(created_on) day), count(*)
from t
group by date(created_on - interval dayofweek(created_on) day);
如果这不是你想要一周开始的那一天,那么你可以添加一个偏移日。
答案 1 :(得分:1)
按日期字段分组,平铺到一周:
SELECT
count(*),
YEARWEEK(created_on) as week
FROM
yourtable
GROUP BY week
这假设created_on
是一种可以解释为日期的类型:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_yearweek
这将为您提供每周分组,但您可能希望将该字段(看起来像YYYYWW
)转换回更具可读性的字段。
答案 2 :(得分:1)
你可以试试这个
SELECT created_on, count( id ) AS count
FROM `test_table`
WHERE created_on
BETWEEN '2013-09-01'
AND '2013-10-10'
GROUP BY WEEK( created_on )