Я существующий SQL запрос, который получает статистику вызовов из телефонной системы Zultys MX250: -AVG или SUM в SQL, где значения рассчитываются на лету
SELECT
CONCAT(LEFT(u.firstname,1),LEFT(u.lastname,1)) AS Name,
sec_to_time(SUM(
time_to_sec(s.disconnecttimestamp) - time_to_sec(s.connecttimestamp)
)) AS Duration,
COUNT(*) AS '#Calls'
FROM
session s
JOIN mxuser u ON
s.ExtensionID1 = u.ExtensionId
OR s.ExtensionID2 = u.ExtensionId
WHERE
s.ServiceExtension1 IS NULL
AND s.connecttimestamp >= CURRENT_DATE
AND BINARY u.userprofilename = BINARY 'DBAM'
GROUP BY
u.firstname,
u.lastname
ORDER BY
'#Calls' DESC,
Duration DESC;
Выход следующим образом: -
Name Duration #Calls TH 01:19:10 30 AS 00:44:59 28 EW 00:51:13 22 SH 00:21:20 13 MG 00:12:04 8 TS 00:42:02 5 DS 00:00:12 1
Я пытаюсь создать четвертый столбец, который показывает среднее время вызова для каждого пользователя, но я изо всех сил пытаюсь понять, как это сделать.
Математически это просто «« Длительность »/« #Calls », но после просмотра некоторых похожих вопросов в StackOverflow, примеры запросов слишком просты, чтобы помочь мне связать мою первую.
Прямо сейчас, я даже не уверен, что можно будет разделить столбец времени на количество вызовов.
ОБНОВЛЕНИЕ: Я был так близок в своем тестировании, но все запуталось & сложнейших вещей. Вот последняя SQL (спасибо @ McAdam331 & мой приятель Джим с работы): -
SELECT
CONCAT(LEFT(u.firstname,1),LEFT(u.lastname,1)) AS Name,
sec_to_time(SUM(
time_to_sec(s.disconnecttimestamp) - time_to_sec(s.connecttimestamp)
)) AS Duration,
COUNT(*) AS '#Calls',
sec_to_time(SUM(time_to_sec(s.disconnecttimestamp) - time_to_sec(s.connecttimestamp))/COUNT(*)) AS Average
FROM
session s
JOIN mxuser u ON
s.ExtensionID1 = u.ExtensionId
OR s.ExtensionID2 = u.ExtensionId
WHERE
s.ServiceExtension1 IS NULL
AND s.connecttimestamp >= CURRENT_DATE
AND BINARY u.userprofilename = BINARY 'DBAM'
GROUP BY
u.firstname,
u.lastname
ORDER BY
Average DESC;
Выход заключается в следующем: -
Name Duration #Calls Average DS 00:14:25 4 00:03:36 MG 00:17:23 11 00:01:34 TS 00:33:38 22 00:01:31 EW 01:04:31 43 00:01:30 AS 00:49:23 33 00:01:29 TH 00:43:57 35 00:01:15 SH 00:13:51 12 00:01:09
Или используйте 'SUM (TIMESTAMPDIFF (SECOND, s.connecttimestamp, s.disconnecttimestamp)) ' – Gervs
Спасибо McAdam331 - Я пробовал ответить на ваш ответ, но я на 14 очков стесняюсь возможности! – furriephillips
@furriephillips Не нужно извиняться. Если это ответ, который поможет вам, вы всегда можете принять его, нажав галочку рядом с вопросом. – AdamMc331