所以我遇到了这个有趣的问题,起初使用简单的 sql 窗口函数似乎很容易。但事实并非如此。任何仅使用等级或密集等级的解决方案?
基本上我想根据汽油价格和从日期开始分配排名。表结构及其数据如下。
如果您期待这样的输出
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 的窗口函数