wladyspb
@wladyspb
Программист

Как сделать группировку по дате чтобы в выборке оказались записи даже за дни по которым нет данных?

Есть таблица из которой выбираются суммы по полям с группировкой по дате, по некоторым датам данных нет, в этом случае нужно получить дату с нулями в суммах, а у меня выборка "пропускает" даты по которым нет данных.
Запрос примерно такой:
SELECT `date`, SUM(field) AS sumField FROM table
                WHERE user_id = 100
                AND `date` >= (CURRENT_DATE - INTERVAL 1 MONTH)
                AND `date` <= (CURRENT_DATE - INTERVAL 1 DAY)
                GROUP BY `date` ORDER BY `date` ASC
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега MySQL
Нормального способа это сделать при помощи SQL нет. Самое простое - обрабатывать дыры в логике приложения.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Ma3ypok
Самое простое - сделать опорную таблицу со всеми нужными датами.
Формируется налету, либо генерируется заранее на века вперед-назад, потом выбираются нужные даты BETWEEN'ом.
Далее к сией таблице LEFT JOIN'ится Ваш запрос.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы