2017-03-07 34 views
0

My tableSUB查詢組和經理

我有被管理者和日期動作表。行動可以是"0" or "1"。 我想根據日期和計數"0" and "1"分組按日期和經理分組。 這是我的代碼。

SELECT COUNT(*) , 
    manager_id, 
    action, 
    CAST(`created_at` AS DATE) AS DATE 
FROM `prerequesttours_history` 
GROUP BY CAST(`created_at` AS DATE), 
    anager_id, 
    action 

我想結果是這樣的:

| count where action = 1 | count where action = 0 | manager_id | date

Result of query

回答

0

如果action只需要在這兩個值,你可以這樣做:

SELECT manager_id, date(`created_at`) AS DATE, 
     SUM(action) as count_1, SUM(1 - action) as cnt_0 
FROM `prerequesttours_history` 
GROUP BY manager_id, date(created_at); 

如果你想更明確一些比較:

SELECT manager_id, date(`created_at`) AS DATE, 
     SUM(action = 1) as count_1, SUM(action = 1) as cnt_0 
FROM `prerequesttours_history` 
GROUP BY manager_id, date(created_at); 

注意:使用cast()到轉換成日期是好的。但是,MySQL爲此提供了更簡單的功能date()

+0

這是我真正想要的。非常感謝。 –

0

嘗試選擇它作爲一個子查詢。

SELECT SUM([Count]), manager_id, action, [Date] 
FROM 
(
    SELECT COUNT(*) 'Count' , manager_id, action, CAST( `created_at` AS DATE) 'Date' 
) main 
GROUP BY manager_id, action, [Date]