gpt4 book ai didi

sql - 数据序列的顺序编号

转载 作者:行者123 更新时间:2023-11-29 12:47:10 25 4
gpt4 key购买 nike

我确实有下表:

create table test_seq (id int, obs int);
insert into test_seq values (1,1);
insert into test_seq values (2,1);
insert into test_seq values (3,1);
insert into test_seq values (4,0);
insert into test_seq values (5,0);
insert into test_seq values (6,1);
insert into test_seq values (7,1);
insert into test_seq values (8,0);
insert into test_seq values (9,0);
insert into test_seq values (10,1);
insert into test_seq values (11,0);

有没有SQL方式,如何创建如下输出?

id   obs    seq_num
1 1 1
2 1 1
3 1 1
4 0 2
5 0 2
6 1 3
7 1 3
8 0 4
9 0 4
10 1 5
11 0 6

每次当 obs 列中的值与上一行(按 id 排序)相比发生变化时,seq_num 增加 1。我可以在 Excel 中轻松解决这个问题(使用简单的 if 公式),但无法在 postgres 中解决这个问题。

最佳答案

使用分析函数,比如:

select id, obs, sum(cnt) over (order by id) as seq_num
from (
select id, obs, case when obs <> (lag(obs) over (order by id)) then 1 else 0 end as cnt
from test_seq
)
order by id;

关于sql - 数据序列的顺序编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14480625/

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