Есть таблица в базе, примерно такого вида id, project_id, value, date_updated
,
то есть таблица хранит значение некоторого параметра для определенного проекта в некоторый момент времени. Обновление таблицы для разных проектов происходит с разными интервалами и может меняться. Появилась задача получения примерного значения параметра для определенного проекта (проектов) на интервале между замерами. Делаю линейную аппроксимацию прямо в запросе, нахожу ближайший замер сверху и ближайший снизу, составляю пропорцию, получаю результат. Примерно так:
SELECT SUM(bc1.value+(bc3.value-bc1.value)*TIME_TO_SEC(TIMEDIFF($datetime,bc1.date_updated))
/TIME_TO_SEC(TIMEDIFF(bc3.date_updated,bc1.date_updated)))) as aproximate
FROM table_name bc1
LEFT JOIN table_name bc2 ON bc1.project_id=bc2.project_id
AND bc1.date_updated<bc2.date_updated
AND bc2.date_updated<$datetime
JOIN table_name bc3 ON bc1.project_id=bc3.project_id
LEFT JOIN table_name bc4 ON bc3.project_id=bc4.project_id
AND bc3.date_updated>bc4.date_updated
AND bc4.date_updated>$datetime
WHERE bc2.id IS NULL
AND bc4.id IS NULL
AND bc1.date_updated<=$datetime
AND bc3.date_updated>$datetime;
Все работает все прекрасно. А вот теперь вопрос, если я хочу посчитать среднее значение параметра в определенный час, за последние 30 (90 дней, год...) дней. но с учетом ранее проведенной аппроксимации. то есть хочу получить среднее значение параметра, скажем в 12 часов дня за последние 30 дней. как это лучше сделать?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всатала задача написать веб приложение на С++До этого писал пару приложений на питоне с использование джанго