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

#sql #postgresql

Вопрос:

Я должен рассчитать годовой прирост точек соприкосновения по местоположению за каждую полную неделю до 2020 года, вот мои примерные данные, где каждая запись является точкой соприкосновения:

 login_id    location      time

1001        India       1/1/2020 6:52
1010        USA         1/2/2020 14:27
1021        India       2/2/2020 4:55
1021        India       2/1/2020 10:17

 

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

 select location, YEAR(time), COUNT(*)
from table
group by location, YEAR(time)
 

Комментарии:

1. Отредактируйте свой вопрос и покажите результаты, которые вы хотите.

Ответ №1:

Если я правильно понимаю, вы можете использовать:

 select location, date_trunc('year', time),
       COUNT(*) as cnt,
       lag(count(*)) over (partition by location order by date_trunc('year', time)) as prev_cnt
from table
group by location, date_trunc('year', time);
 

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