PostgreSQL ранжирует только непрерывные строки в упорядоченных данных
Таким образом, я столкнулся с этой интересной проблемой, которая на первый взгляд кажется простой с простой оконной функцией sql. Но это не так. Любые решения, которые используют только ранг или плотный ранг?
По сути, я хочу назначать звания, исходя из цены на бензин и действующей даты. Структура таблицы и ее данные приведены ниже.
1 ответ
Если вы ожидаете такой результат
price dte rn
----- ---------- --
65.5 2013-06-01 1
66.3 2014-06-01 1
66.3 2015-12-01 2
67 2012-01-01 1
67 2012-06-01 2
67 2013-01-01 3
67 2014-01-01 4
67 2016-01-01 5
запрос должен быть
select *
,row_number() over(partition by price order by dte) rn
from price;
ИЛИ ЖЕ
SELECT *
,rank() OVER (PARTITION BY price ORDER BY dte) rn
FROM price;
Оконные функции PostgreSQL