0

所以我遇到了这个有趣的问题,起初使用简单的 sql 窗口函数似乎很容易。但事实并非如此。任何仅使用等级或密集等级的解决方案?

基本上我想根据汽油价格和从日期开始分配排名。表结构及其数据如下。

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

4

1 回答 1

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;

或者

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

PostgreSQL 的窗口函数

于 2016-02-04T08:00:19.903 回答