2016-08-23 240 views
0

是否可以統計每天的新用戶數並在同一查詢中統計表中的所有用戶數? 此查詢正在運行(它每天計算用戶數量),我只需要在計算所有用戶的位置添加部分。MySQL - 統計每天的用戶數量並統計它們全部

SELECT COUNT(iduser) as newUsers, add_date 
FROM cs_user 
GROUP BY DAY(add_date) 

例子,我需要:

newUsers add_date  
1 2016-05-05 17:33:49 
5 2016-03-10 16:44:33 
2 2016-04-15 19:50:42 
5 2016-05-16 18:46:52 
6 2016-04-18 15:01:34 
1 2016-03-21 23:50:40 
2 2016-03-22 18:22:48 
3 2016-03-23 22:02:45 
2 2016-03-25 16:38:56 
15 2016-04-27 18:05:43 
3 2016-04-29 04:54:05 
23 2016-03-30 17:27:26 

我需要一個新行,它應該翻騰所有用戶的數量。

+0

你如何區分'新用戶'和'老用戶'?同時添加您的預期輸出。 – 1000111

+0

這是基於時間的查詢 - 你選擇了一天,因爲你想跟蹤新用戶(我將在稍後插入WHERE條件,只需要首先計算所有用戶)。 – Sasha

+0

是的,可以使用條件計數(條件放在count()或sum()函數內)。 – Shadow

回答

3

可以使用WITH ROLLUP選項GROUP BY。這會向包含整體COUNT()的結果集添加額外的一行。

順便說一下,the DATE() function會生成DATETIME項的日期,例如您的add_date列。 The DAY() function產生月份的一天。你應該決定你需要哪一個。

我認爲這個查詢會做你想做的。

SELECT COUNT(iduser) as newUsers, DATE(add_date) day 
    FROM cs_user 
GROUP BY DATE(add_date) WITH ROLLUP 
+0

這就是我想要的:)。非常感謝您的幫助和額外的解釋。 – Sasha

2

你可以使用union:

SELECT COUNT(iduser) as newUsers, add_date 
FROM cs_user 
GROUP BY DAY(add_date) 

UNION ALL 
SELECT COUNT(iduser) as newUsers, NOW() 
FROM cs_user