【发布时间】:2013-05-23 07:43:44
【问题描述】:
我正在尝试计算在所有日期的 7 天内至少有两次会话或在所有日期的 30 天内有十次会话的用户数量。
我的数据如下:
Date UserID SessionID
1/1/2013 Bob1234 1
2/1/2013 Bob1234 2
2/2/2013 Bob1234 3
2/3/2013 Cal5678 4
这将导致下表(仅显示选择日期)
Date CountActiveUsers
1/1/2013 1
1/15/2013 0
2/2/2013 1
2/3/2013 2
真实数据集包含连续数据范围内所有日期的值,结果表应包含每个日期的条目。
SessionID 是唯一的,并且 UserID 总是指同一个人。
到目前为止,我有两个查询可以做一些接近的事情。第一个返回用户过去一周的会话数:
SELECT Count(
d.[SessionID]
) As SessionPastWeek
,m.[UserID]
,m.[Date]
FROM [Cosmos].[dbo].[Sessions_tbl] as m
Inner Join [Cosmos].[dbo].[Sessions_tbl] as d
on m.[UserID2] = d.[UserID] AND
--Between does not work here for some reason
d.[Date] <= m.[Date] AND
d.[Date] > DATEADD(d,-7,m.[date])
Group By m.[UserID]
,m.[Date]
另一个来自以下链接,它计算给定日期的活跃用户数 Active Users SQL query
我在 SQL Server 2012 中
我无法将两者结合起来。
为澄清而编辑:我需要的查询可能没有任何 getdate() 或类似内容,因为我需要知道有多少用户符合 1 月 1 日、今天以及其间的所有日期的“活跃”条件。
感谢您的帮助!
【问题讨论】:
-
您使用的是哪个 RDBMS? SQL 服务器 2008?还是 MYSQL?还是其他?
-
我使用的是 SQL Server 2012
标签: sql tsql sql-server-2012