Попытка сделать один запрос из этих 2 запросов - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь получить процент звонков, которые соответствуют разрешенным временным рамкам, чтобы получить ответ.Но из-за одного условия, когда звонок менее 30 секунд, у меня возникла проблема с тем, чтобы заставить его работать.Я пытался отработать условие 30 секунд в операторе Select, но оно не работало (я продолжал получать 100% каждый раз, и после индивидуального просмотра чисел это было невозможно.

Select date, count("speed of answer" < '00:00:30')/ count(calls) as SLA
From five9_data.calllog
Where "call type" = 'Inbound' and campaign in ('Eves Addiction', 'Brook and York') and "service level" = '1' and skill = 'Eves Sales V' 
Group By date
Order By date desc
Limit 5000

Вот2 запроса полностью:

Select date, count(calls) as Total
From five9_data.calllog
Where 
  "call type" = 'Inbound' 
  and campaign in ('Eves Addiction', 'Brook and York') 
  and "service level" = '1' 
  and skill = 'Eves Sales V'   
Group By date
Order By date desc

AND

Select date, count("speed of answer") as AnsweredInTime
From five9_data.calllog
Where 
  "call type" = 'Inbound' 
  and campaign in ('Eves Addiction', 'Brook and York') 
  and "service level" = '1' 
  and skill = 'Eves Sales V' 
  and "speed of answer" < '00:00:30'
Group By date
Order By date desc

Он имеет тот же источник данных, поэтому объединение не работает и не думал, что Join будет работать.

Завершить игру Я хочу иметь возможность сделать запрос, позволяющий работать с двумя запросами выше, и, наконец, разделить AnsptedInTime на Total.

Ответы [ 3 ]

1 голос
/ 12 июля 2019

Я бы порекомендовал написать запрос как:

Select date,
       count(*) as total_count,
       sum( ("speed of answer" < '00:00:30')::int ) as num_AnsweredInTime,
       avg( ("speed of answer" < '00:00:30')::int ) as ratio_AnsweredInTime
from five9_data.calllog
where "call type" = 'Inbound' and
      campaign in ('Eves Addiction', 'Brook and York') and
      "service level" = '1' and
      skill = 'Eves Sales V'
Group By date
Order By date desc
1 голос
/ 11 июля 2019

Функция COUNT (exp) будет подсчитывать количество строк, для которых exp не равно нулю - ей нет дела до true или false.Вы можете убедиться в этом, выполнив команду select count(false) (оценивается в 1) и select count(NULL) (оценивается в 0).Таким образом, вместо

 count("speed of answer" < '00:00:30')

вы можете попробовать либо

 count(nullif("speed of answer" < '00:00:30', FALSE))

(если скорость <00:30, это НЕ будет нулевым и, следовательно, будет учитываться), либо </p>

 sum(case when "speed of answer" < '00:00:30' then 1 else 0 end)
0 голосов
/ 12 июля 2019

Выберите дату, считать (*) как total_count, сумма ((«скорость ответа» <'00: 00: 30 ') :: int) как num_AnsptedInTime, avg ((«скорость ответа» <'00: 00: 30 ') :: int) как ratio_AnsptedInTime from five9_data.calllog где «тип звонка» = «входящий» и кампания в («Eves Addiction», «Brook and York») и «уровень обслуживания» = «1» и скилл = 'Eves Sales V' Группировать по дате Заказ по дате desc </p>

...