一個解決方案,使這項工作,你需要一個數字或帳簿桌包含從零開始的整數的順序列表。在我的例子,我的號碼錶如下所示:
Create Table Numbers (Value int not null primary key)
使用和SQL Server這樣做,你可以這樣做:
Select N.Value As [Hour]
, Count(T.StartDate) As CallCount
, Sum(DateDiff(mi, T.StartDate, T.EndDate)) As [TotalTime(mi)]
, Avg(DateDiff(mi, T.StartDate, T.EndDate)) As [AvgTime(mi)]
From Numbers As N
Left Join Table As T
On DatePart(hh, T.StartDate) = N.Value
Where N.Value Between 0 And 23
Group By N.Value
既然你沒有指定,我認爲一個電話如果它在那個小時開始,則在給定小時內計數。如果一個參數在一個小時內開始或結束,可能會造成重複計數,但會告訴您在一天的給定時間內有多少個呼叫正在進行中,因此一個參數可能會在一個小時內計數。爲此,需要更改上面的查詢以將以下內容添加到On子句Or DatePart(hh, T.EndDate) = N.Value
。
我相信MySQL的等效是:
Select N.Value As [Hour]
, Count(T.StartDate) As CallCount
, Sum(TimestampDiff(MINUTE, T.StartDate, T.EndDate)) As [TotalTime(mi)]
, Avg(TimestampDiff(MINUTE, T.StartDate, T.EndDate)) As [AvgTime(mi)]
From Numbers As N
Left Join Table As T
On Hour(T.StartDate) = N.Value
Where N.Value >= 0 And N.Value <= 23
Group By N.Value
我的意思是參數日期,月和年(在附件「24/20/2009」是我錯了,它可能是「24/03/2009」 )。 – wearetherock 2010-05-26 16:29:25