Подсчет уникальных записей на основе предыдущих групп - PullRequest
0 голосов
/ 18 мая 2018

Попытка найти уникальные значения в каждой группе, однако с оглядкой на ранее сгруппированные элементы.Он будет группироваться по времени, поэтому, если предыдущий временной блок имел уникальное значение, он не должен появляться в следующем временном блоке.Просмотр должен охватывать все предыдущие временные блоки.Таким образом, во время 2 он просматривает время 0 и 1, а во время 10 он смотрит назад во время от 0 до 9.

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

Пример данных:

2018-03-25 00:00:00.000, 123
2018-03-25 00:00:00.000, 231
2018-03-26 00:00:00.000, 234
2018-03-26 00:00:00.000, 123
2018-03-27 00:00:00.000, 123
2018-03-27 00:00:00.000, 231
2018-03-27 00:00:00.000, 234
2018-03-27 00:00:00.000, 432

Пример вывода:

2018-03-25 00:00:00.000, 2
2018-03-26 00:00:00.000, 1
2018-03-27 00:00:00.000, 1

1 Ответ

0 голосов
/ 18 мая 2018

Если я вас правильно понял, вы можете считать, что если значение существует в какой-либо прошлой группе, его следует исключить из набора результатов.

Я думаю, что такой подход должен помочь вам:

select groupped.t, count(*) from
(select distinct base.t, base.v from foo as base where v not in 
  (
  select u.v from foo as u where u.t < base.t
  )
) as groupped group by groupped.t;

Вот и скрипка.Надеюсь это поможет.http://sqlfiddle.com/#!18/4a65e/1

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