我有一个mysql表,其中包含' created_at'和'键入'等等。我想要做的是获取每周创建的总行数,并进一步将该数字分解为' type'。
也就是说,如果我的数据如下:
created_at | type
10/15/2015 car
10/15/2015 bike
10/16/2015 car
10/24/2015 car
10/24/2015 car
10/25/2015 car
10/26/2015 bike
我希望我的查询返回类似的内容:
Week of | Total | car | bike
10/15/2015 3 2 1
10/22/2015 4 3 1
从这个stackoverflow问题(How to group by week in MySQL?),我可以按周分组,但是我很难通过'键入'来进一步分解结果。我得到的最接近的是:
SELECT
FROM_DAYS(TO_DAYS(created_at) -MOD(TO_DAYS(created_at) -1, 7)) AS week_of,
type,
COUNT(*) AS 'rows'
FROM mytable
GROUP BY FROM_DAYS(TO_DAYS(created_at) -MOD(TO_DAYS(created_at) -1, 7)), type
ORDER BY FROM_DAYS(TO_DAYS(created_at) -MOD(TO_DAYS(created_at) -1, 7));
这与我想要获得的有点不同,但它仍然可以使用。但是,它并不包括每周的总数(我希望在结果集中返回我想要的所有数据)。我该怎么做呢?
由于我不知道'类型'中的值,我不想直接在查询中指定这些值,特别是因为这些可以随时间更改。
答案 0 :(得分:0)
逐周使用分组
select week(created_at), type, count(*)
from my_table
where year(created_at) = year(curdate())
group by week(created_at), type