У меня есть требование, когда мне нужно знать, когда sum(value)
достигает определенной точки, и рассчитывать продолжительность. Ниже приведен образец таблицы.
create table sample (dt timestamp, value real);
insert into sample values
('2019-01-20 00:29:43 ',0.29)
,('2019-01-20 00:35:06 ',0.31)
,('2019-01-20 00:35:50 ',0.41)
,('2019-01-20 00:36:32 ',0.26)
,('2019-01-20 00:37:20 ',0.33)
,('2019-01-20 00:41:30 ',0.42)
,('2019-01-20 00:42:28 ',0.35)
,('2019-01-20 00:43:14 ',0.52)
,('2019-01-20 00:44:18 ',0.25);
Теперь мне нужно рассчитать совокупную сумму следующих строк, чтобы увидеть, когда sum(value)
достигнет значения выше 1,0. Для этого может потребоваться всего 1 строка или n строк. Как только эта строка будет достигнута, мне нужно рассчитать разницу во времени между текущей строкой и строкой, где sum(value)
достигает значения выше 1.0.
По сути, мой желаемый результат находится в формате ниже.
Для 1-й строки совокупный sum(value)
достигается в 3-й строке.
Для 2-й строки совокупный sum(value)
достигается в 4-й строке и т. Д.
dt | value | sum(value)| time_at_sum(value)_1| Duration
---------------------+--------+------------------------------------------
2019-01-20 00:29:43| 0.29 | 1.01 | 2019-01-20 00:35:50 | 00:06:07
2019-01-20 00:35:06| 0.31 | 1.31 | 2019-01-20 00:37:20 | 00:02:14
2019-01-20 00:35:50| 0.41 | 1.00 | 2019-01-20 00:37:20 | 00:01:30
2019-01-20 00:36:32| 0.26 | 1.01 | 2019-01-20 00:41:30 | 00:04:58
2019-01-20 00:37:20| 0.33 | 1.10 | 2019-01-20 00:42:28 | 00:05:08
2019-01-20 00:41:30| 0.42 | 1.29 | 2019-01-20 00:43:14 | 00:01:44
2019-01-20 00:42:28| 0.35 | 1.12 | 2019-01-20 00:44:18 | 00:01:50
2019-01-20 00:43:14| 0.52 | NULL | - | -
2019-01-20 00:44:18| 0.25 | NULL | - | -
У кого-нибудь есть идеи или советы о том, как справиться с вышеуказанным требованием?
sum(value)
данные? - person Gordon Linoff   schedule 28.02.2019value
, явно не суммируются сsum(value)
примерами. Можете ли вы отредактировать описание, чтобы показать фактическое вычисление, которое ведет отvalue
кsum(value)
в вашем примере? - person bignose   schedule 28.02.20191.00
дляsum(value)
в вашем результате нарушает ваше условиеwhen the sum(value) reaches above 1.0
, которое переводится в> 1.0
, а не в>= 1.0
. - person Erwin Brandstetter   schedule 28.02.2019