我寫了一個程序,它需要3個參數StartDate,EndDate和TimeRange。根據TimeRange,我的程序拆分日期並分開計數。這裏是我的方法:兩個日期之間的計數
PROCEDURE [dbo].[Procedure1]
@Start datetime,
@Finish datetime,
@TimeRange time
AS
BEGIN
SET NOCOUNT ON;
declare @TimeRanges as TABLE (SessionStart datetime, SessionEnd datetime);
with TimeRanges as (
select @Start as StartTime, @Start + @TimeRange as EndTime
union all
select StartTime + @TimeRange, EndTime + @TimeRange
from TimeRanges
where EndTime < @Finish)
select StartTime, EndTime, Count(Test.ScenarioID) as TotalInboundArrivals
from TimeRanges as TR left outer join
dbo.Test as Test on TR.StartTime <= Test.SessionStartTime and Test.SessionCloseTime < TR.EndTime
where Test.ScenarioID = 24
group by TR.StartTime, TR.EndTime
END
例如,
Start Time: 11:00
End Time: 12:00
TimeRange : 05:00
This procudure splits them like
TimeRange TotalCallPeaks
11:00 11:05 12
11:05 11:10 8
11:10 11:15 15
etc..
這裏是我的問題:我需要它在同一時間發生的最大的呼叫。換句話說,我需要呼叫高峯。任何建議或線索對我來說都非常有用。
在此時間範圍內發生了6個呼叫,但其中4個呼叫是在我想要計算的同一時間發生的。最大點顯示最大呼叫峯值。第5次和第6次呼叫在此時間範圍內發生,但對最大呼叫峯值沒有影響。
答案草圖 - 將問題分爲兩部分。對於第一部分,您想在任何感興趣的時間計算同時通話的次數 - 在這種情況下,有趣的時間是每次通話開始時(因爲通話次數剛剛增加)。對於每個有趣的時間,計算當時的活動電話數量。 *然後*,對於每個時間間隔,計算該時間段內該值的最大值(同時包括該時間段開始之前或之後的最新值)。 –