RabbitMQ/Kafka - пуляете туда событие вида "действие такое-то" на те действия что влияют на статистику.
Создаёте несколько слушателей я которые пересчитывают статистику и складывают в эти таблицы (да, они должны быть по типам день,неделя, месяц,год как вам там надо)
При выводе просто получаете записи и считаете разницу
Можно пересчитывать статистику по cron, но при большом объеме могут быть накладки