0

私はコールセンタープロジェクトに取り組んでおり、特定の時間範囲で同時に着信を計算する必要があります. パラメータ StartTime、EndTime、および Interval を持つプロシージャを作成する必要があります。

例えば:

Start Time: 11:00
End Time: 12:00
Interval: 20 minutes

そのため、プログラムは 1 時間の時間範囲を 3 つの部分に分割し、各部分はこの範囲内で開始および終了した到着、または開始してまだ終了していない到着をカウントする必要があります。

次のようにする必要があります。

11:00 - 11:20 15 calls at the same time(TimePeaks)
11:20 - 11:40 21 calls ...
11:40 - 12:00  8 calls ...

それらを計算する方法はありますか?

4

2 に答える 2

2

タイムスパンに使用できDATEADDますGROUP BY

Select Count(*), DateAdd(Minute, @Interval * (DateDiff(Minute, 0, SomeDate) / @Interval), 0)As Part
From #Temp
Where SomeDate Between @StartTime And @EndTime
Group By DateAdd(Minute, @Interval * (DateDiff(Minute, 0, SomeDate) / @Interval), 0)
ORDER BY Part 

サンプルデータ:

declare @StartTime datetime;
declare @EndTime datetime;  
declare @Interval int;
SET @StartTime = Convert(datetime,'2012-10-19 12:00:00',102);
SET @EndTime = Convert(datetime,'2012-10-19 13:00:00',102);
SET @Interval = 20;

create table #Temp(SomeDate datetime);
insert into #Temp values(Convert(datetime,'2012-10-19 12:05:00',102));
insert into #Temp values(Convert(datetime,'2012-10-19 12:06:00',102));
insert into #Temp values(Convert(datetime,'2012-10-19 12:15:00',102));
insert into #Temp values(Convert(datetime,'2012-10-19 12:25:00',102));
insert into #Temp values(Convert(datetime,'2012-10-19 12:45:00',102));
insert into #Temp values(Convert(datetime,'2012-10-19 12:35:00',102));
insert into #Temp values(Convert(datetime,'2012-10-19 12:37:20',102));
insert into #Temp values(Convert(datetime,'2012-10-19 12:15:00',102));
insert into #Temp values(Convert(datetime,'2012-10-19 12:55:00',102));
insert into #Temp values(Convert(datetime,'2012-10-19 12:18:10',102));

ここにフィドルがあります:http://sqlfiddle.com/#!3/ee6f9/1/0

于 2012-10-19T10:58:09.457 に答える
1

1 時間前の範囲を探します。

DECLARE @iniz VARCHAR(16), @fine VARCHAR(16), @ades VARCHAR(16)
SET @iniz = convert(varchar(16), dateadd(mi,-(60+(datepart(mi,getdate()))), getdate()),120)
SET @fine = convert(varchar(16), dateadd(mi,-(datepart(mi,getdate())), getdate()),120)
SET @ades = convert(varchar(16),Getdate(),120)

PRINT @iniz + ' - ' + @fine + ' - ' + @ades
于 2012-12-07T11:54:41.307 に答える