2015-04-12 2 views
0

Я хотел бы создать некоторую статистику, и я хочу их в массиве, сгруппированном по месяцам и годам.Получить общее количество строк в таблице mysql, сгруппированных по месяцам и годам

Получил MySQL table_users с колонкой user_id. Я хочу создать запрос mysql, чтобы указать, сколько членов было у нас в конце каждого месяца. Результат запроса должен быть:

Year: Month: Members: 
-------------------------- 
2014  12  11345 
2015  1  17939 
2015  2  25003 
2015  3  32667 

Существует также столбец user_signupdate с отметкой времени UNIX при добавлении идентификатор_пользователя. Что бы я ни делал до сих пор, я получаю только увеличение user_id, но я бы хотел получить общее количество всех user_id, которые у нас были для каждого месяца и года.

Можно ли подсчитать и сгруппировать это только с одним запросом MySQL?

+0

Обеспечить некоторые примеры данных с вашим определением таблицы –

+0

SELECT COUNT (user_id) ОТ table_users ORDER BY user_signupdate DESC – lickmycode

ответ

1

Следующий код выполнит простой арифметический расчет, чтобы сгенерировать общее количество участников. См. SQL Fiddle demo.

select 
t1.year, 
t1.month, 
(@rtotal := @rtotal + t1.members) AS members 
from 
(select year(user_signupdate) as year, month(user_signupdate) as month, count(user_id) as members 
from table_users 
group by year(user_signupdate), month(user_signupdate) 
order by year(user_signupdate), month(user_signupdate)) as t1, (Select @rtotal:=0) as rt 
+0

Это дает мне результат, сколько идентификаторов являются новыми в каждом месяце, но, глядя на общую сумму всех новые идентификаторы, включая существующие идентификаторы предыдущих месяцев. – lickmycode

+0

Ваша демонстрация работает и дает результат, который я хотел. Однако, когда я применяю, я получаю синтаксическую ошибку. Нужны ли мне какие-либо специальные настройки mysql для разрешения переменной SET @rtotal? – lickmycode

+0

Что говорит об ошибке? – WorkSmarter

Смежные вопросы