gpt4 book ai didi

sql - 选择 "step"条记录

转载 作者:行者123 更新时间:2023-11-29 11:41:56 24 4
gpt4 key购买 nike

给出下表

  grp |   ind |   val
----------------------
a | 1 | 1
a | 2 | 1
a | 3 | 1
a | 4 | 2
a | 5 | 2
a | 6 | 4
a | 7 | 2
b | 1 | 1
b | 2 | 1
b | 3 | 1
b | 4 | 3
b | 5 | 3
b | 6 | 4

我需要选择以下内容:

  grp |   ind |   val
----------------------
a | 1 | 1
a | 4 | 2
a | 6 | 4
a | 7 | 2
b | 1 | 1
b | 4 | 3
b | 6 | 4

这是针对每个 'grp',每个记录的 'val' 与后续的 'val' 不同(按 'index' 排序)所以每个记录的 'value' “步骤”。

实现这一目标的最有效方法是什么?

谢谢。

这是创建测试用例的脚本:

create temp table test_table
(
grp character varying,
ind numeric,
val numeric
);
insert into test_table values
('a', 1 , 1),
('a', 2 , 1),
('a', 3 , 1),
('a', 4 , 2),
('a', 5 , 2),
('a', 6 , 4),
('a', 7 , 2),
('b', 1 , 1),
('b', 2 , 1),
('b', 3 , 1),
('b', 4 , 3),
('b', 5 , 3),
('b', 6 , 4);

最佳答案

select grp,
ind,
val
from (
select grp,
ind,
val,
lag(val,1,0::numeric) over (partition by grp order by ind) - val as diff
from test_table
) t
where diff <> 0;

关于sql - 选择 "step"条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11539120/

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