Я пытаюсь реализовать запрос, в котором я использую агрегаты для суммирования определенных значений, а затем группирую по функциям даты mysql (месяц | год | неделя). Те предложения group by не возвращают несуществующие месяцы ИЛИ год ИЛИ неделю соответственно по очевидным причинам. Мне было интересно, есть ли способ получить их?
Получение несуществующего месяца/недели/года при использовании MySql group by с функциями даты месяца/недели/года
Ответы (2)
Вам нужно создать фиктивную таблицу:
CREATE TABLE t_dummy (num int PRIMARY KEY);
, заполните его и используйте в OUTER JOIN
:
SELECT @start + INTERVAL num DAY, SUM(mytable.value)
FROM t_dummy
LEFT JOIN
mytable
ON mytable.datetime >= @start + INTERVAL num DAY
AND mytable.datetime < @start + INTERVAL num + 1 DAY
WHERE t_dummy.num BETWEEN @start and @start + @days
Вам нужно столько последовательных NUM
в фиктивной таблице, сколько дней вы хотите охватить своим отчетом.
К сожалению, MySQ
L не имеет встроенного в генераторе строк.
person
Quassnoi
schedule
14.04.2009
Решение должно быть полностью в MySQL? Если это запрос для веб-приложения, я бы закодировал веб-приложение для поиска недостающих строк и вставки их в выходные данные.
person
staticsan
schedule
15.04.2009