Я новичок в SQL Server, и у меня есть некоторые сомнения по поводу функции lag ().
Я должен рассчитать среднее расстояние (в днях) между двумя действиями пользователя. Затем я должен GROUP BY всем пользователям, рассчитать все разницы дат между строками для каждого пользователя и, наконец, выбрать среднее значение по группе.
Просто чтобы прояснить, у меня есть такая таблица:
Сначала я должен отфильтровать дни с активностями (деятельности! = 0). Тогда я должен создать это:
И, наконец, ожидаемый результат:
Я думал, что это может быть "своего рода" код:
select userid, avg(diff)
(SELECT *,DATEDIFF(day, Lag(dateid, 1) OVER(ORDER BY [Userid]),
dateid) as diff
FROM table1
where activities!=0
group by userid) t
group by userid
Конечно, это не работает. Я думаю, что я также должен сделать цикл while, так как число меняется для каждого пользователя.
Надеюсь, ты сможешь помочь мне! большое спасибо