gpt4 book ai didi

sql - 如何忽略数据库查询中重复的顺序值

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:19 26 4
gpt4 key购买 nike

我有一个庞大的 postgres 数据库,需要经常查询。我正在查询的数据集有很多重复的顺序值。示例:

3,4,5,1,1,1,1,1,1,1 ... 1,1,1,1,1,8

在重复值序列的情况下,是否有可能只返回该序列的第一条和最后一条记录?示例:


If the data is:
3,4,5,1,1,1,1,1,1,1 ... 1,1,1,1,1,8
The query result should be:
3,4,5,1*,1**,8

* first occurrence of "1"
** last occurrence of "1"

编辑:
我选择的行由 [value, created_at] 组成,按 created_at 排序。
由于我需要在图表中显示此信息,所以获取第一次和最后一次出现很重要,可以忽略中间的值。

最佳答案

您可以使用 LAG 和 LEAD 相当轻松地做到这一点:

with T(n,created_at,bef,aft) as (
select
n,
created_at,
lag(n,1) over (order by created_at),
lead(n,1) over (order by created_at)
from your_table
)
select
n,
created_at
from T
where bef is distinct from n
or aft is distinct from n;

如果 created_at 的值不唯一,您应该向 ORDER BY 列表添加一个区分列,以便 lag() 和 lead() 表达式具有确定性。

关于sql - 如何忽略数据库查询中重复的顺序值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9491333/

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