2_
Size: a a a
2_
2_
TS
2_
2_
Д
Ð
TS
Ð
Д
TS
create or replace function common.
sum_value_transition(
state common.sum_value_state,
val numeric,
unit integer,
id integer
)returns common.sum_value_state AS $$
declare
i integer;
accum numeric;
BEGIN
FOREACH i in array state.ids
LOOP
IF i = id THEN
RETURN ROW(state.ids, state.accum);
end if;
END LOOP;
IF
jsonb_exists(state.accum, unit::text) THEN
accum =
jsonb_extract_path(state.accum, unit::text)::numeric + val;
ELSE
accum = val;
end if;
RETURN ROW(id || state.ids, state.accum ||
jsonb_build_object(unit::text, accum))::common.sum_value_state;
END;
$$ LANGUAGE plpgsql;
Ð
TS
Ð
Ð
Ð
TS
Д
p
Ð