Вы можете использовать Группировать по , чтобы получить его одним MySQL-запросом
SELECT day, SUM(value) FROM table GROUP BY day WHERE day >= ".date('Ymd', strtotime("-29 days"));
Это должно работать, потому что ваше поле day
является числом и будет увеличиваться каждый день, так что выможно просто сравнить его с gte
Ожидаемый результат будет
---------------------------
| day | SUM(value) |
| INT(8) | |
---------------------------
| 20191012 | 15.25 |
---------------------------
| 20191011 | 29.13 |
---------------------------
| ... | ... |
---------------------------
J4I: Если в вашем наборе данных есть дни без значений, в выводе также отсутствует отсутствующая "строка дня"так что может быть меньше 30 строк результатов.