2016-02-04 49 views
0

所以我遇到了這個有趣的問題,起初看起來很簡單,首先使用一個簡單的SQL窗口函數。 但事實並非如此。任何只使用排名或密集排名的解決方案?PostgreSQL僅在有序數據上排列連續行

基本上我想根據汽油價格和日期生效分配排名。表結構及其數據如下。

[1]: http://i.stack.imgur.com/se6mB.png

+0

編輯您的文章並將您的數據寫入文本。 – Dmitry

回答

2

如果你期待這樣

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; 

OR

SELECT * 
     ,rank() OVER (PARTITION BY price ORDER BY dte) rn 
FROM price; 

PostgreSQL的Window functions