MySQL: вычисление значения на основе предыдущей выборки значения
Дано: в БД пишутся счетчики прошедших через интерфейс байт нарастающим итогом в байтах
Задача: вычислить загрузку канала в мбит/сек
Решение:
В данном случае нам поможет оконная функция LAG, которая позволяет затаскивать к текущему значению выборки, предыдущее. Например так:
1 2 3 4 5 6 |
select dt,(cur-pred)/60/1024 as mbit from ( SELECT dt,value as cur, LAG(value) OVER(PARTITION BY value_type order by value) as pred FROM m_data WHERE place=10 and source=12 and value_type=7 order by id desc ) as zx |