Подсчитать количество результатов на CustomerID - PullRequest
0 голосов
/ 31 октября 2019

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

Например, сколько из предыдущих вызовов завершилось с результатом «Нет контакта»

Я искал функцию CASE WHEN и функцию LAG, но я неудалось получить результат, который я ищу

Ниже и пример того, чего я пытаюсь достичь (столбец PriorNotInterested):

example table

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Это вариант ответа GMB, но он не возвращает NULL, если первый вызов "не заинтересован":

select t.*,
       (sum(v.not_interested) over (partition by t.customer_id order by t.call_date) -
        not_interested
       ) as countnotinterestedprior
from t cross apply
     (values (case when result = 'Not Interested' then 1 else 0 end)
     ) v(not_interested);
0 голосов
/ 31 октября 2019

Требуется условное окно sum() между первой записью клиента и записью, предшествующей текущей. Большинство СУБД поддерживают предложение rows between в оконных функциях:

select 
    t.*,
    sum(case when Result = 'Not Interested' then 1 else 0 end)
        over (
            partition by customer_id 
            order by Call_date
            rows between unbounded preceding and 1 preceding
        ) CountNotIntererstedPrior
from mytable t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...