我正在尝试找到一种最好的方法来计算记录发送给用户的次数(状态从3或4变回1)
这就是我的数据
ID record_id status_id
1 10909 2
2 10909 3
3 10909 1
4 10909 3
5 10909 3
6 10909 4
7 10909 5
答案 0 :(得分:2)
SQL表表示无序集。除非有列指定顺序,否则没有“上一个”或“下一个”行。
您的数据似乎没有这样的列。但是,如果这样做,则可以使用lag()
:
select record_id, count(*)
from (select t.*,
lag(status) over (partition by record_id order by <ordering column>) as prev_status
from t
) t
where status = 1 and prev_status in (3, 4)
group by record_id;