Microsoft는 SQL Server에 익숙하며 2005 버전을 사용하고 있습니다. 내가 할 수있을 필요가있는 무엇반복 호출 비율 찾기
가 와서 반복 호출의 수를 계산합니다.
내가 열 "Daily_Dispo_Date"(날짜)를 호출 한 EP_Call_Int라고 한 표, "로그인"(NVARCHAR 이 모양 (35)), "정책"(INT), "DISPO"(Nvarcar (50))와이 데이터 :
Daily_Dispo_Date Login Policy Dispo
2012-03-01 10:31:54 b_smith 42484 Cancellation
2012-03-01 10:45:12 s_tomas 48424 Payment
2012-03-01 11:01:32 b_smith 41546 Billing Question
2012-03-01 11:04:34 s_tomas 42484 Cancellation
2012-03-01 11:15:42 d_jones 48425 Payment
2012-03-01 11:50:02 d_jones 48425 Billing Question
2012-03-01 13:02:09 b_smith 48425 Billing Question
2012-03-02 10:31:54 d_jones 42489 Payment
2012-03-02 10:45:12 s_tomas 48434 Cancellation
2012-03-02 11:01:32 d_jones 41540 Payment
2012-03-02 11:04:34 s_tomas 41546 Billing Question
2012-03-02 11:15:42 d_jones 48417 Payment
2012-03-02 11:50:02 d_jones 44525 Billing Question
2012-03-02 13:02:09 s_tomas 41546 Billing Question
2012-03-03 10:31:54 d_jones 42089 Cancellation
2012-03-03 10:45:12 s_tomas 48434 Cancellation
2012-03-03 11:01:32 d_jones 41440 Cancellation
2012-03-03 11:04:34 s_tomas 41646 Payment
2012-03-03 11:15:42 d_jones 48817 Payment
2012-03-03 11:50:02 d_jones 41546 Payment
2012-03-03 13:02:09 s_tomas 41446 Payment
나는 SQL 바이올린 링크 http://sqlfiddle.com/#!3/0de9c
에서 모든 테스트 데이터를무엇을해야합니까? 우리 회사가 반복적으로 전화하는 횟수를 세는 것입니다. 어떻게 계산해야하는지는 5 분에서 3 일 사이의 시간 범위를 사용하는 것입니다. 따라서 첫 사람이 처음으로 전화를 걸면 다시 전화를하면 같은 사람에 대해 두 번 칠 수 없습니다.
은 그래서 같이 내 최종 결과를 얻으려고 노력 메신저 것은 :
은 짧은 그래서DECLARE @Start DATETIME, @End DATETIME
SET @Start = '20120401'
SET @End = '20120403'
;With [Find_First_Call] As
(
Select
[Policy]
,[Dispo]
,Min([Daily_Dispo_Date]) As [Call_Date] --need to figure out how to have reset after each call
From [EP_Call_Int]
Group By [Policy], [Dispo]
)
Select
DateAdd(dd, DateDiff(dd, 0, [Daily_Dispo_Date]), 0) As [Daily_Dispo_Date]
, [Dispo]
, Count([Dispo]) As [Total_Calls]
,(
Select
Count([EP_Call_Int2].[Dispo])
From [EP_Call_Int] as [EP_Call_Int2]
Left Join [Find_First_Call] as [Find_First_Call] On [Find_First_Call].[Policy] = [EP_Call_Int].[Policy]
And [Find_First_Call].[Dispo] = [EP_Call_Int].[Dispo]
Where [EP_Call_Int2].[Daily_Dispo_Date] >= DateAdd(n, 5, [Find_First_Call].[Call_Date])
And [EP_Call_Int2].[Daily_Dispo_Date] <= DateAdd(dd, 3, [Find_First_Call].[Call_Date])
And DateAdd(dd, 0, [EP_Call_Int].[Daily_Dispo_Date]), 0) = DateAdd(dd, 0, [EP_Call_Int2].[Daily_Dispo_Date]), 0)
) As [Total_Repeat_Calls]
From [EP_Call_Int]
Where [Daily_Dispo_Date] Between @Start And @End
And [Policy] Like '[4]____'
Group By DateAdd(dd, [Daily_Dispo_Date], 0), [Dispo]
Order By [Daily_Dispo_Date], [Total_Calls] Desc
사람이 3에서 호출하는 경우 :
Daily_Dispo_Date Dispo Total_Calls Total_Repeating
2012-03-01 Cancellation 2 1
2012-03-01 Payment 2 0
2012-03-01 Billing Question 3 2
2012-03-02 Payment 3 0
2012-03-02 Cancellation 1 1
2012-03-02 Billing Question 3 2
2012-03-03 Cancellation 3 0
2012-03-03 Payment 3 0
쿼리 내가 가지고 지금까지 다음과 같습니다 같은 이유로 2 일 콜백으로 계산됩니다. 그들은 하루에 1, 2에 호출하고 3 경우 내가 그것을 내가 모든 규칙을 잘있어 확실하지 않다 하루 1에 반복과 2
당신이 더 이상 (http://stackoverflow.com/q/10500123/397952) – JNK