Последние 12 месяцев, сгруппированные по неделям - PullRequest
21 голосов
/ 24 сентября 2010

У меня есть таблица со столбцом REGDATE, дата регистрации (ГГГГ-ММ-ДД ЧЧ: ММ: СС).Я хотел бы показать гистограмму (ExtJS), чтобы понять, в каком периоде года пользователи регистрируются.Я хотел бы сделать это в течение последних двенадцати месяцев относительно текущей даты и сгруппировать даты по неделям.

Есть ли какие-либо подсказки?

Ответы [ 4 ]

28 голосов
/ 01 мая 2014

FWIW в PostgreSQL, у Караси есть ответ, который работает, но есть более быстрый запрос:

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;

Я основал это на работе Бен Гудэйкр

22 голосов
/ 24 сентября 2010

в 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;
3 голосов
/ 06 февраля 2015

Может быть, это?

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')
0 голосов
/ 24 сентября 2010

Подсказка: (SQL)

SELECT CONVERT (VARCHAR(7), REGDATE, 120) AS [RegistrationMonth]
FROM ...
GROUP BY CONVERT (VARCHAR(7), REGDATE, 120)
ORDER BY CONVERT (VARCHAR(7), REGDATE, 120)
...