SQL - Как я могу посчитать различные идентификаторы для каждого дня в течение последних 7 дней? - PullRequest
0 голосов
/ 12 сентября 2018

Итак, я пытаюсь получить количество отдельных пользователей, зарегистрированных продаж за последние 7 дней, за каждый день. Вот образец таблицы, которую я имею:

ID      Date   
1    2018-01-01
2    2018-01-02
3    2018-01-03
3    2018-01-04
2    2018-01-05
4    2018-01-06
5    2018-01-07
2    2018-01-08

Вот результат, который я ожидал:

Distinct IDs      Date   
1               2018-01-01
2               2018-01-02
3               2018-01-03
3               2018-01-04
3               2018-01-05
4               2018-01-06
5               2018-01-07
4               2018-01-08

Это как если бы я считал различные идентификаторы в группах по дате и за 6 дней до нее. Есть идеи?

1 Ответ

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

Вероятно, самый простой способ - использовать коррелированный подзапрос:

select t.date,
       (select count(distinct t2.id)
        from t t2
        where t2.date >= t.date - interval '6 day' and t2.date <= t.date
       ) as uniques_7day
from (select distinct date
      from t
     ) t;

Обратите внимание, что вы не указали базу данных, поэтому для этого используется стандартный синтаксис SQL ANSI / ISO.

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