Вам нужно использовать функцию DAYOFWEEK
Если конец недели в субботу, любая дата может быть преобразована в субботу.
Например, это вычисляет предстоящую субботу
SELECT DATE(NOW() + INTERVAL (7 - DAYOFWEEK(NOW())) DAY);
Это вычисляет предстоящее воскресенье ( вместо этого вы должны использовать функцию WEEKDAY )
SELECT DATE(NOW() + INTERVAL (6 - WEEKDAY(NOW())) DAY);
Для таблицы с именем mytable и столбцом даты с именем theDate ваше суммирование будет
суббота
SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
SELECT DATE(theDate + INTERVAL (7 - DAYOFWEEK(theDate)) DAY) EndOfWeekDate
FROM mytable
) A GROUP BY EndOfWeekDate;
Воскресенье
SELECT COUNT(1) DateCount,EndOfWeekDate FROM
(
SELECT DATE(theDate + INTERVAL (6 - WEEKDAY(theDate)) DAY) EndOfWeekDate
FROM mytable
) A GROUP BY EndOfWeekDate;
Попробуйте!
ПРЕДУПРЕЖДАЙТЕ, если вы хотите любой другой конец недели, кроме субботы и воскресенья, я написал безумный алгоритм еще 22 сентября 2011 года для вычисления любой недели, начинающейся и заканчивающейся в любой день .