MySQLで、連続したデータを集計する方法についてです。
以下のようなテーブルがあるとすると、
epoc_sec | sensor_id |
---|---|
1628236711 | 0 |
1628236712 | 2 |
1628236713 | 2 |
1628236714 | 2 |
1628236715 | 2 |
1628236716 | 1 |
1628236717 | 1 |
1628236718 | 1 |
1628236719 | 1 |
area_idの件数をまとめたいです。
理想の結果としては、
epoc_sec | sensor_id | count |
---|---|---|
1628236711 | 0 | 1 |
1628236712 | 2 | 4 |
1628236716 | 1 | 4 |
上記のようにしたいのですが、
(※epoc_secは最初に見つかった値とします。)
色々調べてみたところ旅人算メソッドというものがヒットしたのですが、
内容を確認してもピンと来ず、試行錯誤中です。
SQL
1select p2.epoch_sec, min(p2.sensor_id) , max(p2.sensor_id) ,count(*) 2from (select p1.epoch_sec, p1.sensor_id, 3 Row_Number() over(order by p1.epoch_sec) 4 -Row_Number() over(order by p1.epoch_sec) 5 as buff 6 from persons p1 7 ) p2 8group by buff 9order by min(p2.epoch_sec);
MySQL8.0です。
よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/01 07:17