2016-04-26 50 views
0

我有一個mysql表,其中包含'created_at'和'type'等列。我想要做的是獲得每週創建的總行數,並進一步將該數字按「類型」細分。MySQL分解組通過結果添加更多詳細信息到分組

也就是說,如果我的數據如下:

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 

從這個計算器的問題(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

通過使用組和周

select week(created_at), type, count(*) 
from my_table 
where year(created_at) = year(curdate()) 
group by week(created_at), type 
+0

在我的情況下使用一週沒有工作,因爲我的數據可以跨越年,WEEK()只出現在今年返回星期數。這與我所嘗試的類似,但沒有總結類型數量。 – Hawkeye001

+0

我已更新答案 – scaisEdge