У меня есть таблица пользователей, которые присоединились, и столбец, который отслеживал отметку времени, когда они присоединились, является отметкой времени UNIX.
Я хочу сгруппировать их по неделям в секундах, 604800, но сталкиваюсь с препятствиями. В других поисках используется MySQL неделя, но это не то, что мне нужно, поскольку эти недели не всегда полны в конце года и различаются в зависимости от дня начала.
Запрос на группировку по неделям:
SELECT
COUNT(member_id) as new_members,
MAX(joined) as last_joined,
MIN(joined) as first_joined,
YEAR(FROM_UNIXTIME(joined)) AS yr,
MONTH(FROM_UNIXTIME(joined)) AS mn,
WEEK(FROM_UNIXTIME(joined)) AS wk
FROM members
WHERE member_group_id NOT IN (2, 4, 7)
GROUP BY `yr`,`mn`,`wk`
ORDER BY new_members DESC
Я хочу сгруппировать пользователей по отметке времени, начиная со следующего воскресенья. Итак, это будет следующее воскресенье, с интервалом в одну неделю в обратном направлении, пока у меня не закончатся записи.
Я попытался FLOOR( joined / 604800 ) AS weekno
, но это неточно, поскольку оно начинается с самой ранней или последней записи, и я нужна неделя для начала в воскресенье, например:
SELECT COUNT(member_id) as new_members,
MAX(joined) as last_joined, MIN(joined) as first_joined,
FLOOR( joined / 604800 ) AS weekno
FROM `members`
WHERE member_group_id NOT IN (2, 4, 7)
GROUP BY `weekno`
ORDER BY weekno DESC
У кого-нибудь есть советы?
Пример данных, которые я ищу
member_id | joined
1 | 1578182420
2 | 1578182430
3 | 1578182500
4 | 1578183400
5 | 1576082400
6 | 1576082410
7 | 1576082420
Результат:
new_members | last_joined | first_joined | week_start
4 | 1578183400 | 1578181400 | 1578182400
3 | 1576082420 | 1576082400 | 1577577600