标记两个原因码之间的事件

时间:2018-06-20 16:42:07

标签: mysql sql

我正在使用具有事件列的时间序列数据。事件列中的“ s”表示事件的开始,而“ S”表示结束。

某些记录可能不在s和S范围内,而我不感兴趣。

我需要将这些记录分为编号的事件。本质上,我需要捕获s和S之间的第一组记录,并将它们标记为事件1,下一组标记为事件2,等等。

我正在尝试在My SQL中执行此操作,却想不出执行此操作的最佳方法。

SET @trip_num = 0;
SET @id = '';    

SELECT
    *,
    @trip_num := CASE WHEN @id = vid THEN 
                 CASE WHEN event = binary 's' THEN @trip_num + 1 ELSE @trip_num END 
                    ELSE 
                 CASE WHEN reason = binary 's' THEN 1 ELSE 0 END 
                    END AS 'trip_id',
    @id := vid

FROM table
ORDER BY vid, datestamp;

到目前为止,这是我的操作方式,但是问题是,在“ S”之后且在“ s”之前的记录将被视为事件的一部分。

有什么想法吗?

如果记录的时间戳比行程中的“ S”事件晚,我可以添加标志并过滤掉它们。

0 个答案:

没有答案