2012-04-21 2 views
8

У меня есть таблица, в которой содержатся подписчики участников, и я хотел бы, чтобы вы могли делать некоторые диаграммы и анализ данных и искать тенденции регистрации и т. Д., Поэтому я хотел бы иметь возможность постройте график, который показывает мне, сколько людей подписались каждую неделю за последние 52 недели.Подсчет числа событий за неделю в PHP

У меня есть диаграммы, работающие нормально, поскольку я использую их широко уже, но изо всех сил пытаюсь понять, как извлекать данные из MySQL с помощью PHP, что раздражает меня, поскольку я знаю, что это не должно быть сложно - таблица имеет поле под названием datestamp с форматом Ymd. Как лучше всего создать цикл, который печатает дату и счет для регистрации на этой неделе и каждую неделю за 52 предыдущих недели?

+0

не забудьте принять ответ, если это было полезно! –

ответ

12

Если предположить, что столбец временной метки называется signup_date, вы могли бы сделать запрос как:

SELECT 
    WEEKOFYEAR(signup_date) AS weekno, 
    COUNT(1) AS signups 
FROM your_table 
GROUP BY WEEKOFYEAR(signup_date); 

Это даст вам результирующий набор из 2 столбцов, неделю в году, и сколько регистраций были в эта неделя.

Edit 1:

Чтобы получить дату недели для каждого из этих результатов, можно добавить следующее к запросу:

SELECT 
    WEEKOFYEAR(signup_date) AS weekno, 
    COUNT(1) AS signups, 
    SUBDATE(signup_date, INTERVAL WEEKDAY(signup_date) DAY) AS date_of_week 
FROM your_table 
GROUP BY WEEKOFYEAR(signup_date); 
+0

Это работает отлично, но для одной мелочи - я хотел бы иметь возможность смотреть за 52 недели до сегодняшнего дня, а не смотреть на 52 недели в году. Используя этот метод, эта неделя показана (правильно) как неделя 16, но при построении графика я хотел бы, чтобы эта неделя показывалась как неделя 1 (или 52), а затем на прошлой неделе неделя 2 (или 51) и т. Д., Поэтому она меняет каждый неделя по мере продвижения. Также можно указать фактическую дату недели, например. 01/01/2012 4, 08/01/2012 14 и так далее? – bhttoan

+0

См. Редактировать 1 для последней части вашего комментария. –

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