Журнал звонков имеет следующие столбцы:
CallingParty, CalledParty, Duration, EventTime
, и пример данных следующий:
X, a, 10, 10:20
X, b, 12, 10:34
X, c, 8, 12:08
a, X, 22, 12:45
X, a, 10, 13:55
d, X, 30, 15:01
То, что я хотел бы сделать, это рассчитать статистику для каждого контакта (сколько раз пользователь X позвонил контакту, какова сумма продолжительности исходящих вызовов, сколько раз контакт позвонил пользователю X, и что была сумма продолжительности входящих звонков). На самом деле я пытаюсь добыть данные из журнала вызовов пользователя X.
Статистика для приведенного выше примера будет следующей:
contactName, incomingCallsCount, IncomingCallsDuration, OutgoingCallsCount, OutgoingCallsDuration
a, 1, 10, 2, 20
b, 0, 0, 1, 12
c, 0, 0, 1, 8
d, 1, 30, 0, 0
Я попробовал следующий запрос с другими joins (), но не смог получить правильный результат
SELECT t1.CallingParty AS Contact, t1.CallingPartyCount, t1.CallingPartyDuration, t2.CalledPartyCount, t2.CalledPartyDuration FROM
(SELECT e.CallingParty, COUNT(*) AS CallingPartyCount, SUM(CAST(REPLACE(e.Duration, 'NULL', '0') AS int)) AS CallingPartyDuration FROM Events e WHERE Duration <> 'NULL' GROUP BY e.CallingParty) t1
<JOIN>
(SELECT e.CalledParty, COUNT(*) AS CalledPartyCount, SUM(CAST(REPLACE(e.Duration, 'NULL', '0') AS int)) AS CalledPartyDuration FROM Events e WHERE Duration <> 'NULL' GROUP BY e.calledParty) t2
ON t1.CallingParty = t2.CalledParty
Кто-нибудь знает, какой будет правильный запрос для получения правильной статистики?
Спасибо!