Необходимо рассчитать общее количество заправленного бака - PullRequest
0 голосов
/ 26 июня 2019

У меня есть данные о заполнении разных резервуаров. Резервуар можно начинать заполнять в любой момент, который кажется необходимым конечному пользователю. По этим данным мне нужно рассчитать общее количество заправленного бака за день.

User ID   Tank ID   tank_capacity   tank_percent_full   server_time
XXZFR170500033  01617IJT0526Z3  1000    96  2017-05-01T02:02:23.971Z
XXZFR170500033  01617IJT0526Z3  1000    95  2017-05-01T10:58:57.691Z
XXZFR170500033  01617IJT0526Z3  1000    95  2017-05-01T14:03:36.828Z
XXZFR170500052  01617IJT0528y3  1000    95  2017-05-19T18:13:04.327Z
XXZFR170500052  01617IJT0528y3  1000    94  2017-05-19T18:27:18.657Z
XXZFR170500052  01617IJT0528y3  1000    75  2017-05-20T13:53:25.142Z
XXZFR170500052  01617IJT0528y3  1000    74  2017-05-20T17:51:54.000Z
XXZFR170500039  01617IJT0528x3  1000    66  2017-05-24T12:41:16.659Z
XXZFR170500039  01617IJT0528x3  1000    69  2017-05-24T12:54:27.501Z
XXZFR170500039  01617IJT0528x3  1000    65  2017-05-24T13:12:02.007Z

Ответ будет выглядеть так

XXZFR170500033 01617IJT0526Z3 2017-05-01 1% used 10 l
XXZFR170500052 01617IJT0526y3 2017-05-01 21% used 210 l
XXZFR170500039 01617IJT0526x3 2017-05-01 4% used 40 l

помните, что танк 01617IJT0526x3 начинался с 66, но повышался до 69, это означает, что танк наполнялся за это время, и мы должны игнорировать его, а затем, когда мы видим снижение общего процента, тогда только мы берем разницу. поэтому в наших расчетах мы возьмем только от 69 до 65

1 Ответ

1 голос
/ 26 июня 2019

Вы можете получить заливку, используя lag():

select t.*
from (select t.*, 
             lag(tank_percent_full) over (partition by tank_id order by server_time) as prev_tank_percent_full
      from t
     ) t
where prev_tank_percent_full < tank_percent_full;

Немного неясно, какой результат вы на самом деле хотите получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...