我有按时间(按ASC顺序)存储在MongoDB中的点火数据,如:
1. **V_no** **Ign** **time**
2. 001 On 1536721212
3. 001 On 1536721213
4. 001 On 1536721220
5. 001 Off 1536721221
6. 001 Off 1536721222
7. 001 On 1536721234
8. 001 On 1536721256
9. 001 Off 1536721299
我正在寻找的是分组连续点火会话,输出如下:
1. **V_no** **Ign** **sTime** **eTime**
2. 001 On 1536721212 1536721220
3. 001 Off 1536721221 1536721222
4. 001 On 1536721234 1536721256
5. 001 Off 1536721299 1536721299
在R编程中,可以使用rleid(Ignition)来对连续点火数据进行分组,例如:
data %>% group(rleid(Ign)) %>% mutate(sTime=first(time),eTime=last(time))
我想要在MongoDB或Mysql中使用相同类型的解决方案。
答案 0 :(得分:0)
如果您具有最新版本的MySQL,则可以使用row_number()
:
select v_no, ign, min(time), max(time)
from (select t.*, row_number() over (partition by v_no order by time) as seq1,
row_number() over (partition by v_no, ign order by time) as seq2
from table t
) t
group by v_no, Ign, (seq1- seq2);
答案 1 :(得分:0)
以下是MongoDB中对此的查询
href="/#services"
请注意,如果您拥有大量数据,此查询将非常昂贵。