PostgreSQL ранжирует только непрерывные строки в упорядоченных данных

Таким образом, я столкнулся с этой интересной проблемой, которая на первый взгляд кажется простой с простой оконной функцией sql. Но это не так. Любые решения, которые используют только ранг или плотный ранг?

По сути, я хочу назначать звания, исходя из цены на бензин и действующей даты. Структура таблицы и ее данные приведены ниже.

https://stackru.com/images/2814d54e7ce369f99328fcb9c400b1058835bd24.png

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

Другие вопросы по тегам