Последние 12 месяцев, группа за неделю
У меня есть таблица со столбцом REGDATE, дата регистрации (YYYY-MM-DD HH: MM: SS). Я хотел бы показать гистограмму (ExtJS), чтобы понять, в какой период пользователи подписываются. Я хотел бы сделать это в течение последних двенадцати месяцев в отношении текущей даты и группировать даты по неделям.
Любые подсказки?
Ответы
Ответ 1
в MySQL:
SELECT COUNT(*), DATE_FORMAT(regdate, "%X%V") AS regweek FROM table GROUP BY regweek;
или
SELECT COUNT(*), YEARWEEK(NOW(), 2) as regweek FROM table GROUP BY regweek;
в PostgreSQL:
SELECT COUNT(*), EXTRACT(YEAR FROM regdate)::text || EXTRACT(WEEK FROM regdate)::text AS regweek FROM table GROUP BY regweek;
Ответ 2
FWIW в PostgreSQL, у Karaszi есть ответ, который работает, но есть более быстрый запрос:
SELECT date_trunc('week', REGDATE) AS "Week" , count(*) AS "No. of users"
FROM <<TABLE>>
WHERE REGDATE > now() - interval '12 months'
GROUP BY 1
ORDER BY 1;
Я основывал это на работе Ben Goodacre
Ответ 3
Может быть, это?
select to_char(REGDATE,'WW') "Week number",
count(*) "number of signups",
from YOUR_TABLE
where REGDATE > current_date-365
group by to_char(REGDATE,'WW')
order by to_char(REGDATE,'WW')
Ответ 4
Подсказка: (SQL)
SELECT CONVERT (VARCHAR(7), REGDATE, 120) AS [RegistrationMonth]
FROM ...
GROUP BY CONVERT (VARCHAR(7), REGDATE, 120)
ORDER BY CONVERT (VARCHAR(7), REGDATE, 120)