3 sql sql-server datediff lag date-difference
我是 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
Run Code Online (Sandbox Code Playgroud)
当然是行不通的。我想我还必须做一个 while 循环,因为每个用户的 rownumber 都会发生变化。
我希望你能帮助我!非常感谢您
你快到了。只需添加,partition by userid以便为每个用户 ID 和 计算差异order by dateid。
select userid, avg(diff)
(SELECT t.*
,DATEDIFF(day, Lag(dateid, 1) OVER(PARTITION BY [Userid] ORDER BY [dateid]),dateid) as diff
FROM table1 t
where wager!=0
) t
group by userid
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6897 次 |
| 最近记录: |