Повне запитання перепишіть
Я шукаю першу () сукупну функцію.
Тут я знайшов щось, що майже працює:
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в цьому випадку не вийде. Це не сукупна функція, ви насправді фільтруєте дані, тому ви можете це зробити лише один раз.