Возникли проблемы AVG Time - PullRequest
0 голосов
/ 09 января 2019

У меня проблемы с усреднением по времени, я пытался усреднить его, пытался преобразовать, а затем усреднить. Единственная вещь, которая выглядела так, как будто она будет работать, не поддерживается в Redshift SQL.

Пытался преобразовать время и усреднить время, но ни одно из них не удалось

Select 
  date,
  "agent name",
  (TO_CHAR((sum("handle time") || 'second')::interval,'MI.SS')) as total,
  (TO_CHAR((avg("handle time") || 'second')::interval,'MI.SS'))as AVGHandleTime
From five9_data.calllog
Where Skill in ('SF Sales', 'FYF Sales') 
Group By "agent name", date
Order By Date DESC
Limit 100

Я пытаюсь получить среднее время звонка для каждого человека за определенный период времени. Я новичок в sql и прошу прощения, если я что-то упустил. например 4:36 (ММ: СС) приведет к 4,6 в десятичном виде. Надеюсь, этот вопрос гораздо яснее моего прошлого.

Значения времени обработки 00:17:00, 00:18:13, 00:01:55, 00: 05: 40

Ответы [ 2 ]

0 голосов
/ 09 января 2019

ВЫБРАТЬ дату, "имя агента", avg (SPLIT_PART («время обработки», «:», 1) * 60 + SPLIT_PART («время обработки», «: ', 2) :: десятичное число (18,2) + SPLIT_PART (« время обработки »,': ' , 3) :: десятичный (18,2) / 60,00) как AvgHandleTime От Five9_data.calllog Где умение в («Продажи SF», «Продажи FYF») Группировка по «имени агента», дате Сортировать по дате DESC Предел 100;

0 голосов
/ 09 января 2019

Поскольку ваше время хранится в виде varchar и в Redshift нет типа Time или Interval, вам придется преобразовать это mm:ss в число, чтобы вы могли взять среднее значение (как вы можете средняя строка / varchar).

Вы можете использовать функцию SPLIT_PART, чтобы разделить строку, указав разделитель, и получить ее часть, а затем применить математические вычисления, чтобы получить десятичное представление вашего времени:

SELECT date,
  "agent name",
  avg(SPLIT_PART("handle time", ':', 1)::decimal(18,2)*60.00 + SPLIT_PART("handle time", ':', 2)::decimal(18,2) + SPLIT_PART("handle time", ':', 3)::decimal(18,2)/60.00) as AvgHandleTime
From five9_data.calllog
Where Skill in ('SF Sales', 'FYF Sales') 
Group By "agent name", date
Order By Date DESC
Limit 100;

У меня нет экземпляра красного смещения, чтобы проверить это, но он должен привести вас в стадион.

ОБНОВЛЕНО: я обновил учетную запись в формате hh:mm:ss. Здесь мы конвертируем в минуты в десятичной форме (как мы были раньше).

...