我有一個SQL Server 2012表,其中包含會話和2的開始和結束時間。我現在需要知道每分鐘有多少會話已激活,這意味着> = starttime和< = endtime。計算具有兩列和每分鐘的行
例
Order_strUserId | Order_dtmInitiated | Order_dtmLastUpdated
s2ir1f8vqx | 2016-12-13 15:06:17.993 | 2016-12-13 15:06:59.723
4839m6lnjchn | 2016-12-13 15:09:42.807 | 2016-12-13 15:12:21.220
y7k3u6q1wjn | 2016-12-13 15:11:40.173 | 2016-12-13 15:12:01.630
sdc74a0ahid | 2016-12-13 15:14:06.013 | 2016-12-13 15:14:28.703
2pgj2ixpta9 | 2016-12-13 15:17:41.567 | 2016-12-13 15:17:42.063
qlfv4vmxdb | 2016-12-13 15:18:17.750 | 2016-12-13 15:18:47.227
y9jd24i59x5v | 2016-12-13 15:19:30.160 | 2016-12-13 15:19:30.607
9vb2d6u90hn | 2016-12-13 15:22:09.257 | 2016-12-13 15:22:09.743
行1只爲2016年12月13日15點06計數,行2,每分鐘之間2016年12月13日15時09分和2016年12月13日15:12等。
我需要的是像
Time | ActiveSessions
2016-12-13 15:06 | 1
2016-12-13 15:09 | 1
2016-12-13 15:10 | 1
2016-12-13 15:11 | 2
2016-12-13 15:12 | 2
如何做到這一點?
到目前爲止,我的想法一直是以分鐘計算UserId,然後將計數所需的時間加上。但我不知道如何計算這個。
SELECT COUNT(t.UserSessionId) ,
DATEPART(yyyy , t.TimeInitiated) AS 'Year',
DATEPART(MM, t.TimeInitiated) 'Month',
DATEPART(DD, t.TimeInitiated) 'Day',
DATEPART(HH, t.TimeInitiated) 'Hour',
DATEPART(MI, t.TimeInitiated) 'Minute',
t.TimeNeeded
FROM (SELECT DATEDIFF(MI, Order_dtmInitiated, Order_dtmLastUpdated) AS 'TimeNeeded',
Order_strUserId AS 'UserSessionId',
Order_dtmInitiated AS 'TimeInitiated'
FROM tblOrder) t
GROUP BY DATEPART(yyyy , t.TimeInitiated), DATEPART(MM, t.TimeInitiated), DATEPART(DD, t.TimeInitiated), DATEPART(HH, t.TimeInitiated), DATEPART(MI, t.TimeInitiated), t.TimeNeeded
需要小的修改,你能解釋一下舉出更多的例子活動會話,並添加SQL的版本使用的是 – TheGameiswar
會話是積極的「Order_dtmInitiated和Order_dtmLastUpdated」之間。我們使用的是 Microsoft SQL Server Management Studio v11.0.5058.0 – Shade