Считать изменение статуса столбца с помощью sqlite - PullRequest
0 голосов
/ 21 сентября 2018

Мне нужно посчитать, сколько раз логический столбец изменился на NO для каждого агента.Или сколько раз переходили от ДА к НЕТ для каждого агента (что проще) Пример:

Table Example

Ожидаемый результат: агент_А, 2 агент_В, 0

1 Ответ

0 голосов
/ 21 сентября 2018

В основном вам нужно предыдущее значение и накопленная сумма.SQLite не поддерживает оконные функции, так что это сложно.

select t.*,
       (select t2.status
        from t t2
        where t2.agent = t.agent and t2.datescan < t.datescan
        order by t2.datescan desc
        limit 1
       ) as prev_status
from t;

Далее необходимо определить изменения и их совокупную сумму:

with tt as (
      select t.*,
             (select t2.status
              from t t2
              where t2.agent = t.agent and t2.datescan < t.datescan
              order by t2.datescan desc
              limit 1
             ) as prev_status
      from t
     )
select tt.*,
       (select count(*)
        from tt tt2
        where tt2.agent = tt.agent and tt2.datescan < t.datescan and
              tt2.status = 'NO' and tt2.prev_status = 'YES'
      ) as counter
from tt;
...