Групповые последовательные данные в MongoDb - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть данные зажигания по времени (в порядке 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.

1 Ответ

0 голосов
/ 12 сентября 2018

Если у вас последняя версия 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...