@freelion93

Как посчитать среднюю разницу между значениями в SQL?

Структура таблицы следующая:
5d7f3d60f1de3726263518.jpeg
Требуется найти среднюю разницу между действиями по времени (timestamp) для каждого объекта (file).

Например у Файла1 было 4 активности:
Активность1 во время 1549256689
Активность2 во время 1549655521
Активность3 во время 1550165431
Активность4 во время 1550317858

Например у Файла2 было 2 активности:
Активность1 во время 1548548573
Активность2 во время 1549875732

Итого у Файла1 средняя разница между активностями 353723‬, а у Файла2 1327159, итого общая средняя 973436‬

Как составить SQL запрос чтобы найти такую среднюю разницу?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@freelion93 Автор вопроса
Получил довольно топовый ответ со Stack Overflow, ребята там все поняли без ссылкокидания на референсы и посылом на простую функцию avg, получилось следующее:
SELECT SUM(time_diff) / ((SELECT COUNT(*) FROM oc_activity) - 1) AS avg_diff FROM ( SELECT ABS(o1.timestamp - COALESCE((SELECT o2.timestamp FROM oc_activity o2 WHERE o2.object_id > o1.object_id ORDER BY o2.object_id LIMIT 1), o1.timestamp)) time_diff FROM oc_activity o1) t;


Всем спасибо кто пытался помочь!

P.S. в восьмой версии еще есть оператор LEAD для итераций
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега MySQL
Web developer
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы