Группировка результатов по периоду - PullRequest
0 голосов
/ 07 октября 2011

У меня есть некоторые данные, которые я хочу получить, но я хочу, чтобы они были сгруппированы по определенному количеству секунд. Например, если моя таблица выглядит так:

| id | user | pass | created |

Столбец created имеет значение INT и содержит метку времени (количество секунд с 1970 года).

Я хотел бы указать количество пользователей, созданных в период с прошлого месяца до текущей даты, но показать их сгруппированных, скажем, 7*24*3600 (неделя). Так что, если в диапазоне есть 1000 новых пользователей, пусть они покажут, сколько зарегистрированных каждую неделю (100 на первой неделе, 450 на второй, 50 на третьей и 400 на 4-й неделе - примерно так).

Я пытался сгруппировать результаты по created / 7*24*3600, но это не работает.

Как должен выглядеть мой запрос?

Ответы [ 3 ]

2 голосов
/ 07 октября 2011

Вы должны оставить целую часть только этого деления.Вы можете сделать это с помощью функции floor().

Вы пробовали select floor(created/604800) as week_no, count(*) from users group by floor(created/604800)?

Я предполагаю, что у вас есть часть "избранных пользователей, созданных в прошлом месяце".

2 голосов
/ 07 октября 2011

Вам нужно использовать целочисленное деление div, в противном случае результат превратится в реальное, и ни одна из недель не будет преобразована в одно и то же значение.

SELECT 
  (created div (7*24*60*60)) as weeknumber
  , count(*) as NewUserCount
FROM users
WHERE weeknumber > 1
GROUP BY weeknumber

См .: http://dev.mysql.com/doc/refman/5.0/en/arithmetic-functions.html

1 голос
/ 07 октября 2011

Хорошо, вот возможные варианты, которые вы можете попробовать:

ГРУППА ПО ДНЮ

select count(*), DATE_FORMAT(created_at,"%Y-%m-%d") as created_day FROM widgets GROUP BY created_day

ГРУППА ПО МЕСЯЦУ

select count(*), DATE_FORMAT(created_at,"%Y-%m") as created_month FROM widgets GROUP BY created_month

ГРУППА ПО ГОДУ

select count(*), DATE_FORMAT(created_at,"%Y") as created_year FROM widgets GROUP BY created_year
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...