MySQl расчетный счет с группой - PullRequest
1 голос
/ 20 октября 2011

Я пытаюсь выполнить простой запрос, который подсчитывает, сколько раз клиент вызывал агент.

Call_ID  | Lead_id | Agent
1        | 1       | madison
2        | 1       | Kelly
3        | 2       | madison
4        | 1       | Sam

Мне нужно добавить еще один столбец с именем call_attempt, который будет уникальным для каждого агента, и привести

Call_ID  | Lead_id | Agent   | call attempt
1        | 1       | madison | 1
2        | 1       | Kelly   | 2
3        | 2       | madison | 1
4        | 1       | Sam     | 3

Ответы [ 3 ]

1 голос
/ 20 октября 2011

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

update calls c
   set call_attempt = 
       (select count(Lead_id) from calls c2
        where c.Lead_id = c2.Lead_id and c2.Call_ID <= c.Call_ID);

Вот демонстрация: http://sqlize.com/fXn4p2cc5j

0 голосов
/ 20 октября 2011

запрос с ужасной производительностью, но вы все равно здесь:

select t1.call_id, t1.lead_id, t1.agent, 
       (select count(*) from THETABLE t2
         where t2.lead_id=t1.lead_id
          and t2.call_id <= t1.call_id)
from THETABLE t1

ОБНОВЛЕНИЕ:

Запрос с повышенной производительностью:

select t1.call_id, t1.lead_id, t1.agent, 
       count(t2.call_id) as cum_sum
from THETABLE t1
inner join THETABLE t2
  on t2.lead_id=t1.lead_id
   and t2.call_id <= t1.call_id
group by t1.call_id
0 голосов
/ 20 октября 2011

Для первой половины вашего вопроса:

SELECT Lead_id, Agent, COUNT(*) AS NumberOfCalls
    FROM YourTable
    GROUP BY Lead_id, Agent

Во второй половине я не уверен, что вы просите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...