Итак, вот моя ситуация. У меня есть 1 запрос, который получает результаты, сгруппированные по дате, тогда я объединяю весь второй запрос, который получает итоговые значения (без группировки по дате). Моя проблема заключается в том, что я вычисляю среднее значение полей, и когда я хочу суммировать средний, мои номера не складываются.Получение полного использования Союза Все
Вот мой SQLFiddle
Вот мой запрос:
SELECT
t.end,
SUM(CASE WHEN (t.start != t.end) THEN TIMESTAMPDIFF(DAY, t.start, t.end) ELSE 1 END)/COUNT(t.id) as averageTime
FROM store t
GROUP BY t.end
UNION ALL
SELECT
'Total',
SUM(CASE WHEN (t.start != t.end) THEN TIMESTAMPDIFF(DAY, t.start, t.end) ELSE 1 END) as averageTime
FROM store t
Сейчас второй запрос просто дает общее не общее от среднего. Любая помощь приветствуется, спасибо.
Для уточнения, так как существует некоторая путаница ...
мне нужно получить среднее за сгруппированных дату, на сколько пунктов были в этой группе
TimeDiff/кол (t.id)
Поскольку я не группирую в объединении все запросы, он делает это в целом, а затем деля. Надеюсь, это имеет смысл.
Первый запрос является правильным вывода данных выглядит следующим образом:
1, 1,6667, 3 (Те значения averageTime из первого запроса) 5,6667 (Должен быть общий ряд) Сейчас у меня есть его из 10, что является суммой, прежде чем первые ряды были усреднены.
Почему вы не используете функцию avg, а затем суммируете их? –
Я в замешательстве, вы хотите «СУММ» из средних значений (используйте «AVG» в первом запросе), среднего в течение всех дней в конце? Конечно, первая быстро сортируется с помощью 'WITH ROLLUP', избегая необходимости в' UNION'. – Wrikken
timeDiff/count (id) -> GROUPED BY DATE – John