我有一个表,其中一些记录将特定属性设置为非空值。我想要获取这些记录之后的所有记录(按created_at
列排序)。
以下是示例数据:
id | factor | created_at
1 | NULL | 2001-01-01
2 | 1.2 | 2001-01-02
3 | NULL | 2001-01-03
4 | NULL | 2001-01-04
5 | 0.9 | 2001-01-05
6 | NULL | 2001-01-06
7 | 1.1 | 2001-01-07
8 | NULL | 2001-01-08
9 | NULL | 2001-01-09
10 | 1.1 | 2001-01-10
11 | NULL | 2001-01-11
等等。在这种情况下,我想获取ID为3,6,8和11的记录。在PostgreSQL 9.3中它是否可行?在真正的应用ids
中,不一定是顺序的 - 还有user_id
列,我只获取具有相同user_id
值的记录。我已经阅读了一些关于LEAD
窗口函数的内容,这里可能很有用,但在这种情况下我不确定如何使用它。
答案 0 :(得分:5)
尝试:
select id, factor, created_at
from (select id,
factor,
created_at,
lag(factor, 1) over(order by created_at) as prev_factor
from tbl
order by created_at) x
where factor is null
and prev_factor is not null