[英]Group data in intervals without 0
我有下表:
+---------------------+--------+----------+
| MeasureInterval | Car_id | Distance |
+---------------------+--------+----------+
| 2020-12-15 17:00:00 | 1 | 20 |
+---------------------+--------+----------+
| 2020-12-15 17:05:00 | 1 | 30 |
+---------------------+--------+----------+
| 2020-12-15 17:10:00 | 1 | 17 |
+---------------------+--------+----------+
| 2020-12-15 17:15:00 | 1 | 0 |
+---------------------+--------+----------+
| 2020-12-15 17:20:00 | 1 | 0 |
+---------------------+--------+----------+
| 2020-12-15 17:25:00 | 1 | 10 |
+---------------------+--------+----------+
| 2020-12-15 17:30:00 | 1 | 15 |
+---------------------+--------+----------+
| 2020-12-15 17:35:00 | 1 | 0 |
+---------------------+--------+----------+
| 2020-12-15 17:40:00 | 1 | 0 |
+---------------------+--------+----------+
| 2020-12-15 17:45:00 | 1 | 0 |
+---------------------+--------+----------+
我正在嘗試 select 汽車移動的連續間隔(忽略距離 = 0 的間隔),因此結果將類似於:
+---------------------+---------------------+--------+--------------+
| | | | |
| MeasureInterval_min | MeasureInterval_max | Car_id | Distance_sum |
+---------------------+---------------------+--------+--------------+
| 2020-12-15 17:00:00 | 2020-12-15 17:10:00 | 1 | 67 |
+---------------------+---------------------+--------+--------------+
| 2020-12-15 17:25:00 | 2020-12-15 17:30:00 | 1 | 25 |
+---------------------+---------------------+--------+--------------+
知道如何實現這一目標嗎?
這是一個差距和孤島問題。 島嶼是具有非零距離的相鄰記錄。
這是一種使用行號之間的差異來識別組的方法:
select
min(measureinterval) as measureinterval_min,
max(measureinterval) as measureinterval_max,
car_id,
sum(distance) as distance
from (
select t.*,
row_number() over(partition by carid order by measureinterval) rn1,
row_number() over(partition by carid, (distance = 0) order by measureinterval) rn2
from mytable t
) t
where distance > 0
group by car_id, rn1 - rn2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.