Saya memiliki tabel pengguna yang telah bergabung dan kolom yang melacak stempel waktu ketika mereka bergabung adalah stempel waktu UNIX.
Saya ingin mengelompokkannya berdasarkan waktu berminggu-minggu dalam hitungan detik, 604800, tetapi saya menemui hambatan. Pencarian lainnya menggunakan minggu MySQL, tetapi bukan itu yang saya cari karena minggu-minggu tersebut tidak selalu penuh pada akhir tahun dan bervariasi tergantung pada hari awal.
Kueri untuk pengelompokan Minggu:
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
Saya ingin mengelompokkan pengguna saya berdasarkan stempel waktu mulai Minggu depan. Jadi, itu akan terjadi pada hari Minggu berikutnya, dan interval satu minggu mundur sampai saya kehabisan catatan.
Saya telah mencoba FLOOR( joined / 604800 ) AS weekno
tetapi itu tidak akurat karena dimulai dari catatan paling awal atau terbaru, dan saya memerlukan minggu untuk dimulai pada hari Minggu, seperti:
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
Apakah ada yang punya tips?
Contoh data yang saya cari
member_id | joined
1 | 1578182420
2 | 1578182430
3 | 1578182500
4 | 1578183400
5 | 1576082400
6 | 1576082410
7 | 1576082420
Hasil:
new_members | last_joined | first_joined | week_start
4 | 1578183400 | 1578181400 | 1578182400
3 | 1576082420 | 1576082400 | 1577577600