У меня есть таблица пользователей, которые присоединились, и столбец, в котором отслеживается отметка времени, когда они присоединились, является отметкой времени 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