【发布时间】:2018-09-07 10:00:33
【问题描述】:
我是 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 循环,因为每个用户的行号都会改变。
我希望你能帮助meeee!非常感谢你
【问题讨论】:
-
欢迎来到 Stackoverflow。与其将数据发布为图像,这里的许多志愿者更希望您将其提供为
text。如果您想真正提供帮助,DDL 和INSERT语句会更好(How to post T-SQL Question)。图片中的某些数据看起来好像丢失了(例如,第一张图片中第 3 行的活动值在哪里)。我也看不到第一张图像中的数据如何变成第二张图像中的数据。如果您提供 DDL 和INSERT语句,这将非常有帮助。
标签: sql sql-server lag datediff date-difference