2016-08-23 6 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

вы можете использовать союз:

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 
Смежные вопросы