我有name, timestamp, doing
列。我已经按name
,然后按timestamp
进行了排序,我希望在具有相同doing
的组中将name
列下移看起来像{{1} }-A, A, A, B, B, A, A, ...
和A
的交替序列。从B
到B
过渡后,我只需要得到包含第一A
行的行,在同名的组中。
B
我想回来
name timestamp doing
1 1 A
1 2 A
1 3 B
1 4 B
1 5 A
2 2 B
2 4 A
2 6 B
2 8 A
但是不是
name timestamp doing
1 3 B
2 6 B
因为它不是2 2 B
内从A
到B
的过渡
答案 0 :(得分:1)
我认为您只想要lag()
:
select t.*
from (select t.*,
lag(doing) over (partition by name order by timestamp) as prev_doing
from t
) t
where prev_doing = 'A' and doing = 'B';