Запрос Oracle - годовой тренд населения по городам - PullRequest
0 голосов
/ 03 марта 2019

У меня есть результаты из запроса SQL.Таблица называется «население» со столбцами: регион, страна, город, год_v и численность населения:

REGION  COUNTRY CITY    YEAR_V  POPULATION
europe  france  paris   2015    2.1
europe  france  paris   2017    2.2
europe  france  lyon    2016    .4
europe  spain   madrid  2012    2.9
europe  spain   madrid  2013    3
europe  spain   madrid  2014    3.1
europe  spain   madrid  2016    .8

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

city    growth   year_diff
Madrid   0.10    2012-2013
Madrid   0.10    2013-2014
Paris    0.10    2015-2017

Буду признателен за подсказку, как написать запрос, который возвращает мне такой результат.

1 Ответ

0 голосов
/ 03 марта 2019

Вы бы использовали lag():

select region, country, city,
       year_v, population,
       prev_year_v, prev_population,
       (population - prev_population) as diff
from (select t.*,
             lag(population) over (partition by region, country, city order by year_v) as prev_population,
             lag(year_v) over (partition by region, country, city order by year_v) as prev_year_v,
      from t
     ) t
where prev_year_v is not null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...