У меня есть очень простая сводная таблица, в которой суммируются 2 поля в таблице, где записи собираются с 15-минутными интервалами. Так;Сводная таблица MySQL - оценить и отрегулировать
SELECT timevalue, SUM(value1) AS sumvalue1, SUM(value2) AS sumvalue2
FROM table
GROUP BY timevalue
возвращает результаты, которых я ожидал бы;
timevalue sumvalue1 sumvalue2
-------------------------------------
16/08/2016 08:30 3000 200
16/08/2016 08:45 3200 150
16/08/2016 09:00 3100 400
16/08/2016 09:15 3300 450
16/08/2016 09:30 3400 600
Мой вопрос в том, есть ли способ проверить, что каждое значение суммы никогда не меньше предыдущего значения? и если она возвращает сумму из предыдущего значения времени? (поэтому поэтому суммы всегда совпадают или превышают предыдущее значение времени).
Таблица результатов должна выглядеть следующим образом;
timevalue sumvalue1 sumvalue2
-------------------------------------
16/08/2016 08:30 3000 200
16/08/2016 08:45 3200 200
16/08/2016 09:00 3200 400
16/08/2016 09:15 3300 450
16/08/2016 09:30 3400 600
Я предполагаю, что мне нужно какое-то утверждение if? Любые идеи о том, как достичь этого?
Большое спасибо
Hi Abhik, демо работает отлично, однако sumv alue1 и sumvalue 2 - вычисленные поля. Если я добавлю больше значений в mytable, а затем попробую изменить sumvalue1 и sumvalue2 на сумму (sumvalue1) и sum (sumvalue2) вместе с добавлением группы по времени, я просто получаю фактические расчетные цифры. Не скорректированные цифры .... – EllBrandon
'выберите TIMEVALUE, sumvalue_1 в sumvalue1, sumvalue_2 в sumvalue2 из ( выберите TIMEVALUE, если (@ prev_val1 = сумма (sumvalue1) или @ prev_val1> сумма (sumvalue1), @ prev_val1, сумма (sumvalue1)) как sumvalue_1, if (@ prev_val2 = sum (sumvalue2) или @ prev_val2> sum (sumvalue2), @ prev_val2, sum (sumvalue2)) как sumvalue_2, @ prev_val1: = sum (sumvalue1), @ prev_val2: = сумма (sumvalue2) от туЬаОго, (выберите @ prev_val1: = 0, @ prev_val2: = 0) х группу по TIMEVALUE порядка TIMEVALUE ) х заказа timevalue' – EllBrandon
Да, вы можете изменить EXA mple query и поместите ваш исходный запрос как внутренний запрос, а вместо 'from mytable' вы можете иметь' from (выберите ваш фактический запрос) x, (....) ' –