Эти функции нужны каждому PostgreSQL
Несколько полезных функций: if, first, last.
if(<условие выполняется?>, <да>, [<нет>])
Компактная альтернатива конструкции CASE. Последний аргумент необязательный, если нужно вернуть NULL в случае невыполнения условия.
CREATE OR REPLACE FUNCTION public.if(boolean, anycompatible, anycompatible
DEFAULT NULL::unknown)
RETURNS anycompatible
LANGUAGE sql
IMMUTABLE PARALLEL SAFE
AS
$function$
SELECT CASE WHEN $1 THEN $2 ELSE $3 END
$function$;
first(<значение>)
Агрегатная функция возвращает первое значение отличное от NULL. Работает с оконными функциями и типом BOOLEAN.
CREATE OR REPLACE FUNCTION public.first_agg(anyelement, anyelement)
RETURNS anyelement
LANGUAGE sql
IMMUTABLE PARALLEL SAFE STRICT
AS
$function$
SELECT $1
$function$;
CREATE OR REPLACE AGGREGATE public.first(pg_catalog.anyelement)
(
SFUNC = first_agg,
STYPE = anyelement
);
last(<значение>)
Агрегатная функция возвращает последнее значение отличное от NULL. Работает с оконными функциями и типом BOOLEAN.
CREATE OR REPLACE FUNCTION public.last_agg(anyelement, anyelement)
RETURNS anyelement
LANGUAGE sql
IMMUTABLE PARALLEL SAFE STRICT
AS
$function$
SELECT $2
$function$;
CREATE OR REPLACE AGGREGATE public.last(pg_catalog.anyelement)
(
SFUNC = last_agg,
STYPE = anyelement
);
Начать дискуссию