Повне запитання перепишіть
Я шукаю першу () сукупну функцію.
Тут я знайшов щось, що майже працює:
CREATE OR REPLACE FUNCTION public.first_agg ( anyelement, anyelement )
RETURNS anyelement LANGUAGE sql IMMUTABLE STRICT AS $$
SELECT $1;
$$;
-- And then wrap an aggregate around it
CREATE AGGREGATE public.first (
sfunc = public.first_agg,
basetype = anyelement,
stype = anyelement
);
Проблема полягає в тому, що коли колона varchar (n) проходить через першу функцію (), вона перетворюється на простий вархар (без розміру). Намагаючись повернути запит у функцію як НАЗАД НА ЗВ'ЯЗКУ будь-якого елемента, я отримую таку помилку:
ПОМИЛКА: структура запиту не відповідає типу результату функції Estado de SQL: 42804 Детальніше: Повернений символ типу, що змінюється, не відповідає очікуваному символу типу (40) у стовпці 2. Контекст: PL / pgSQL функція vsr_table_at_time (будь-який елемент, часова мітка без часового поясу ) рядок 31 у ПОВЕРНЕННІ ЗАПИТАННЯ
На цій же сторінці вікі є посилання на C Версію функції, яка б замінила вище. Я не знаю, як його встановити, але мені цікаво, чи могла б ця версія вирішити мою проблему.
Тим часом, чи є спосіб змінити вищевказану функцію, щоб вона повертала той самий тип вхідного стовпчика?
DISTINCT ON
в цьому випадку не вийде. Це не сукупна функція, ви насправді фільтруєте дані, тому ви можете це зробити лише один раз.