gpt4 book ai didi

sql - 在 Postgres 中创建自定义编号

转载 作者:行者123 更新时间:2023-11-29 13:18:33 25 4
gpt4 key购买 nike

我有一个包含这些列的表格:

track    track_id
-----------------
1 1
1 1
0 2
1 2
1 2
0 3
1 3
1 3
0 4
0 5
....

我有列 track 并且想要计算 track_id,它将是:从 1 开始,每次 track 为 0 时,track_id 应递增 1(0 表示新轨道的开始)。

我希望我可以设置一个变量,然后在每次条件为真时递增它,但似乎没有一种简单的方法可以做到这一点。

我将不胜感激可以提取它的查询。谢谢。

最佳答案

首先,您需要一个指定排序的列。 SQL 表表示无序 集。假设您有这样一个列,我将其称为 id

然后,您可以使用累计和:

select t.*, 1 + sum( (track = 0)::int ) over (order by id) as track_id
from t;

如果 track 只取值 0 和 1,您可以进一步简化:

select t.*, 1 + sum(1 - track) over (order by id) as track_id
from t;

关于sql - 在 Postgres 中创建自定义编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45579493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com