#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);
Это помещает предыдущее значение в ту же строку-при условии, что есть данные за все годы. Затем вы можете выполнять любые вычисления, которые вам нравятся.