计算时间间隔内的值
count values over time interval
有人可以协助 SQL 查看。
我有一个名为 LoginActivity
的 table
CREATE TABLE [dbo].[LoginActivity](
[LoAc_ActivityID] [int] IDENTITY(1,1) NOT NULL,
[LoAc_UserID] [int] NULL,
[LoAc_Login] [datetime] NULL,
[LoAc_logout] [datetime] NULL,
[LoAc_Duration] [numeric](24, 6) NULL,
)
其中记录了login/logout次用户id和returns次数据如下。
779 1 2017-11-03 08:07:41.000 2017-11-03 08:09:14.000 1.000000
780 1 2017-11-04 08:09:19.000 2017-11-04 08:27:19.000 17.000000
781 2 2017-11-04 08:27:22.000 2017-11-04 08:35:11.000 7.000000
782 3 2017-11-04 08:35:18.000 2017-11-04 08:58:12.000 19.000000
783 4 2017-11-04 08:35:22.000 2017-11-04 08:58:12.000 19.000000
我需要创建一个视图来计算 LoAc_Login 在过去 1 小时、2 小时、3 小时和最后 4 小时内的用户数。我想呈现如下数据。
WithinHour 1HourAgo 2HoursAgo 3HoursAgo 4HoursAgo
2 3 5 0 2
谢谢。
有点像;
SELECT
sum(CASE WHEN DATEDIFF(H,getdate(),LoAc_Login) >= 0 AND DATEDIFF(H,getdate(),LoAc_Login) < 1 THEN 1 ELSE 0 END AS WithinHour,
sum(CASE WHEN DATEDIFF(H,getdate(),LoAc_Login) >= 1 AND DATEDIFF(H,getdate(),LoAc_Login) < 2 THEN 1 ELSE 0 END AS OneHourAgo,
etc.
FROM LoginActivity
未测试,语法可能因快速输入而偏离,但希望您明白了吗?
有人可以协助 SQL 查看。
我有一个名为 LoginActivity
的 tableCREATE TABLE [dbo].[LoginActivity](
[LoAc_ActivityID] [int] IDENTITY(1,1) NOT NULL,
[LoAc_UserID] [int] NULL,
[LoAc_Login] [datetime] NULL,
[LoAc_logout] [datetime] NULL,
[LoAc_Duration] [numeric](24, 6) NULL,
)
其中记录了login/logout次用户id和returns次数据如下。
779 1 2017-11-03 08:07:41.000 2017-11-03 08:09:14.000 1.000000
780 1 2017-11-04 08:09:19.000 2017-11-04 08:27:19.000 17.000000
781 2 2017-11-04 08:27:22.000 2017-11-04 08:35:11.000 7.000000
782 3 2017-11-04 08:35:18.000 2017-11-04 08:58:12.000 19.000000
783 4 2017-11-04 08:35:22.000 2017-11-04 08:58:12.000 19.000000
我需要创建一个视图来计算 LoAc_Login 在过去 1 小时、2 小时、3 小时和最后 4 小时内的用户数。我想呈现如下数据。
WithinHour 1HourAgo 2HoursAgo 3HoursAgo 4HoursAgo
2 3 5 0 2
谢谢。
有点像;
SELECT
sum(CASE WHEN DATEDIFF(H,getdate(),LoAc_Login) >= 0 AND DATEDIFF(H,getdate(),LoAc_Login) < 1 THEN 1 ELSE 0 END AS WithinHour,
sum(CASE WHEN DATEDIFF(H,getdate(),LoAc_Login) >= 1 AND DATEDIFF(H,getdate(),LoAc_Login) < 2 THEN 1 ELSE 0 END AS OneHourAgo,
etc.
FROM LoginActivity
未测试,语法可能因快速输入而偏离,但希望您明白了吗?