Postgresql 在行上生成第n个匹配项
我希望为每个客户访问商店生成第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 |
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;
谢谢,这已经奏效了-只要阅读文档,我就能看到窗口功能适用的各种情况,所以我将更详细地研究它。谢谢,这已经奏效了-只要阅读文档,我就能看到窗口功能适用的各种情况,所以我将更详细地研究它。