Postgres交替组查询
Postgres alternating group query
鉴于我有 table:
my_table
id INT
bool BOOLEAN
还有一些数据:
1, true
2, true
3, false
4, true
5, true
6, false
7, false
8, false
9, true
...
我怎样才能 SELECT
只找到当前行的 ID 和前一行的 ID 之间的 bool
值发生变化的行?
在这种情况下,我希望结果如下所示:
1, true
3, false
4, true
6, false
9, true
...
您可以使用 lag()
:
select t.*
from (select t.*, lag(bool) over (order by id) as prev_bool
from mytable t
) t
where t.bool <> prev_bool;
鉴于我有 table:
my_table
id INT
bool BOOLEAN
还有一些数据:
1, true
2, true
3, false
4, true
5, true
6, false
7, false
8, false
9, true
...
我怎样才能 SELECT
只找到当前行的 ID 和前一行的 ID 之间的 bool
值发生变化的行?
在这种情况下,我希望结果如下所示:
1, true
3, false
4, true
6, false
9, true
...
您可以使用 lag()
:
select t.*
from (select t.*, lag(bool) over (order by id) as prev_bool
from mytable t
) t
where t.bool <> prev_bool;