Выполнение сумм без оконных функций или пользовательских переменных требует объединения таблицы с самим собой и поиска строк, которые ранжируются ниже текущих. Это дорогостоящая операция, но более надежная, чем пользовательские переменные.
SELECT main.id_user, main.date, main.c AS today_count, main.c + COUNT(prev.date) AS running_count
FROM (
SELECT id_user, date, COUNT(*) AS c
FROM posts
GROUP BY id_user, date
) AS main
LEFT JOIN posts AS prev ON prev.id_user = main.id_user AND prev.date < main.date
GROUP BY main.id_user, main.date, main.c
ORDER BY main.date DESC
Существуют различные способы написания вышеуказанного запроса, и некоторые из них могут быть несколько более эффективными, чем другие, но не ожидают чудес при большом наборе данных.
Демонстрация на DB Fiddle