2017-12-20 12 views
1

私は車のIDのテーブル - idとバッテリレベル - batteryを10分間隔で収集しています。レコード間に平均時間が経過しました

私の目標は、バッテリが100から0に低下するのにかかる平均時間です。私の目的は、すべての車のIDの間でグローバルな平均をとることです。すなわち、battery = 100とすべてのユニークIDについてはbattery = 0です。 1つの小さな注意点は、の後に来なければならないということです。言い換えれば、充電時間を除外したいと思います(100が0の後に来るとき)。

psqlにこのようなクエリを書き込む方法はありますか?ここで

は、一台の車のデータのサンプルです:

id|       time| battery 
54 | 2017-12-12 09:50:04.402775+00 |  100 
54 | 2017-12-12 09:40:04.618926+00 |  100 
54 | 2017-12-12 09:30:04.11399+00 |  100 
54 | 2017-12-12 09:20:03.906716+00 |  100 
54 | 2017-12-12 09:10:03.955133+00 |  100 
54 | 2017-12-12 09:00:04.678508+00 |  100 
54 | 2017-12-12 08:50:03.733471+00 |  100 
54 | 2017-12-12 08:40:03.65688+00 |  100 
54 | 2017-12-12 08:30:04.260608+00 |  100 
54 | 2017-12-12 08:20:03.98387+00 |  100 
54 | 2017-12-12 08:10:04.164129+00 |  98 
54 | 2017-12-12 08:00:04.597976+00 |  98 
54 | 2017-12-12 07:50:04.5|  98 
54 | 2017-12-12 07:40:04.441531+00 |  98 
54 | 2017-12-12 07:30:04.310876+00 |  98 
54 | 2017-12-12 07:20:04.317241+00 |  98 
54 | 2017-12-12 07:10:03.856432+00 |  67 
54 | 2017-12-12 07:00:03.628862+00 |  67 
54 | 2017-12-12 06:50:03.868495+00 |  67 
54 | 2017-12-12 06:40:04.490324+00 |  67 
54 | 2017-12-12 06:30:03.83739+00 |  67 
54 | 2017-12-12 06:20:03.817014+00 |  67 
54 | 2017-12-12 06:10:04.081174+00 |  29 
54 | 2017-12-12 06:00:04.178765+00 |  29 





    data_type   
-------------------------- 
integer 
timestamp with time zone 
integer 

答えて

1

ので、あなただけの次の100

前0
select avg(extract(epoch from (next_time - time)) as avg_recharge_time 
from (select t.*, 
      lead(battery) over (partition by id order by time) as next_battery, 
      lead(time) over (partition by id order by time) as next_time 
     from t 
     where battery in (0, 100) 
    ) t 
where battery = 100 and next_battery = 0; 

を持っ100Sをしたい。これは、その質問に答えますあなたは尋ねました。しかしながら。あなたの状況はもっと複雑であると私は想像することができます。例えば、電池を部分的に充電することができれば、これは不正確な結果をもたらす。そのような状況がある場合は、もう1つ質問に質問し、適切なサンプルデータと説明を付けてください。

+0

はい、そうです。それに気づいてくれてありがとう。部分的に再充電することが可能であり、したがって、充電の増加があるすべてのケースを除外する必要があります。私は新しいスレッドを開始します –

関連する問題