нарастающего итога нажранного времени (cputime). Хочется узнать, сколько каждый юзер съел процессорного времени за период.
Для одного юзера - положительные значения runningDifference дадут ровно то, что мне надо. Для нескольких - запрос вида:
SELECT
date,
login,
if(runningDifference(cpu) > 0, runningDifference(cpu), 0) AS cpu
FROM
(
SELECT
date,
login,
cpu
FROM hosting2_users
WHERE date = '2019-04-03'
ORDER BY datetime ASC
)
для некоторых пользователей выдаёт миллионы секунд, чего быть не может.
Есть ли какие-либо стандартные приёмы для избежания подобного, кроме как расширить область обсчёта и потом сделать обрезание по нужным данным?
Попробуйте в подзапросе добавить в ORDER BY login
runningDifference не учитывает что login меняется. по идее вам надо просто вычесть max(cputime) из min(cputime)
Обсуждают сегодня