/
telnov.ob
/
postgresql-patterns-library
Обзор
Документация
Войти
/
telnov.ob
/
postgresql-patterns-library
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
functions/encode/delta_encode.sql
23 строки
607 B
rin-nas
language sql BEGIN ATOMIC
14 апр 2026, 16:15
14 апр 2026, 16:15
acbbc15
Код
Авторство
О чём код?
create or replace function public.delta_encode(a int[]) returns int[] immutable returns null on null input parallel safe -- Postgres 10+ language sql set search_path = '' begin atomic select array( select coalesce(a.v - lag(a.v) over (order by a.o), a.v) from unnest(delta_encode.a) with ordinality as a(v,o) order by a.o ); end; comment on function public.delta_encode(a int[]) is 'https://en.wikipedia.org/wiki/Delta_encoding'; -- TEST do $$ begin assert public.delta_encode(array[2, 4, 6, 9, 7]) = array[2, 2, 2, 3, -2]; end; $$;