Подтвердить что ты не робот

Последние 12 месяцев, группа за неделю

У меня есть таблица со столбцом REGDATE, дата регистрации (YYYY-MM-DD HH: MM: SS). Я хотел бы показать гистограмму (ExtJS), чтобы понять, в какой период пользователи подписываются. Я хотел бы сделать это в течение последних двенадцати месяцев в отношении текущей даты и группировать даты по неделям.

Любые подсказки?

4b9b3361

Ответ 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)