Postgresql 在行上生成第n个匹配项

Postgresql 在行上生成第n个匹配项,postgresql,Postgresql,我希望为每个客户访问商店生成第n个访问编号 使用以下查询: select customer_id, store_id, date from visits order by date asc; 我得到的表格如下所示: customer_id | store_id | date ------------------------------------------ 1 | 101 | 1st November 2018 2 | 102 |

我希望为每个客户访问商店生成第n个访问编号

使用以下查询:

select customer_id, store_id, date from visits order by date asc;
我得到的表格如下所示:

customer_id | store_id | date
------------------------------------------
1           | 101      | 1st November 2018
2           | 102      | 2nd November 2018
2           | 102      | 3rd November 2018
3           | 103      | 1st November 2018
2           | 102      | 4th November 2018
我想做的是按日期升序排序,以附加第n个访问列,例如:

customer_id | store_id | date              | nth_visit
-------------------------------------------------------
1           | 101      | 1st November 2018 | 1
2           | 102      | 2nd November 2018 | 1
2           | 102      | 3rd November 2018 | 2
3           | 103      | 1st November 2018 | 1
2           | 102      | 4th November 2018 | 3
有没有办法在Postgresql的输出中实现这一点?我尝试了一个嵌套的select和groupby,但它都有点梨形

我觉得可能有一个标志我可以增加,但我还没有找到这样的东西:

select customer_id, store_id, date, occurance(customer_id, store_id) as nth_visit from visits order by date asc;
您可以使用以下方法:

select customer_id, 
       store_id, 
       "date", 
       row_Number() over (partition by customer_id, store_id order by "date") as nth_visit 
from visits 
order by "date" asc;
您可以使用以下方法:

select customer_id, 
       store_id, 
       "date", 
       row_Number() over (partition by customer_id, store_id order by "date") as nth_visit 
from visits 
order by "date" asc;

谢谢,这已经奏效了-只要阅读文档,我就能看到窗口功能适用的各种情况,所以我将更详细地研究它。谢谢,这已经奏效了-只要阅读文档,我就能看到窗口功能适用的各种情况,所以我将更详细地研究它。