2017-12-20 1 views
1

저는 차 ID 테이블 id과 배터리 레벨 -을 10 분 간격으로 수집합니다.레코드 사이의 평균 시간이 만료되었습니다.

목표는 다음과 같습니다. 배터리가 100에서 0으로 떨어지는 데 걸리는 평균 시간입니다. 내 목표는 모든 자동차 ID에서 전역 평균을 취하는 것입니다. 즉, battery = 100과 모든 고유 ID는 battery = 0입니다. 하나의 작은주의 사항은 , 100을 따라 와야한다는 것입니다. 즉, 충전 시간 (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

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; 

이 앞에 0이있는 100 단위를 원하는 질문에 대한 대답이 너는 물었다. 하나. 나는 네 상황이 더 복잡하다고 상상할 수있다. 예를 들어, 배터리를 부분적으로 충전 할 수 있으면 잘못된 결과가 나타납니다. 이와 같은 상황에 처한 경우 질문과 적절한 샘플 데이터 및 설명을 요청하십시오.

+0

네, 맞습니다. 그 점에 대해 고마워요. 부분적으로 재충전하는 것이 가능하므로 요금이 증가하는 모든 경우를 제외해야합니다. 나는 새로운 실을 시작할 것이다. –

관련 문제