Anda harus menggunakan fungsi DAYOFWEEK
Jika Akhir Minggu di hari Sabtu, tanggal apa pun dapat diubah menjadi hari Sabtu.
Misalnya, ini menghitung hari Sabtu yang akan datang
SELECT DATE(NOW() + INTERVAL (7 - DAYOFWEEK(NOW())) DAY);
Ini menghitung hari Minggu yang akan datang (Anda harus menggunakan fungsi WEEKDAY sebagai gantinya)
SELECT DATE(NOW() + INTERVAL (6 - WEEKDAY(NOW())) DAY);
Untuk tabel yang disebut mytable dengan Kolom Tanggal yang disebut tanggal, penjumlahan Anda akan menjadi
Sabtu
SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
SELECT DATE(theDate + INTERVAL (7 - DAYOFWEEK(theDate)) DAY) EndOfWeekDate
FROM mytable
) A GROUP BY EndOfWeekDate;
Minggu
SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
SELECT DATE(theDate + INTERVAL (6 - WEEKDAY(theDate)) DAY) EndOfWeekDate
FROM mytable
) A GROUP BY EndOfWeekDate;
Cobalah !!!
CAVEAT jika Anda menginginkan akhir minggu selain Sabtu dan Minggu, saya menulis sebuah algoritma gila pada 22 Sep 2011 untuk menghitung setiap minggu dimulai dan berakhir hari apa pun .