Вместо да актуализирате броя на ден, седмица и т.н., просто ВМЪКВАТЕ ред в таблица всеки път, когато дейност се случи по следния начин:
insert into activities (activity_date, activity_info)
values (CURRENT_TIMESTAMP, 'whatever');
Сега вашите отчети са много прости като:
select count(*) from activities
where activity_date between '2008-01-01' and '2008-01-07';
или
select YEARWEEK(`activity_date`) as theweek, count(*)
group by theweek