Страница 1 из 1

Пользовательские статистические функции (aggregate)

Добавлено: 13 мар 2008, 14:39
Gera
Подскажите пожалуйста, можно ли в FB 2.0 реализовать свои агрегатные функции.

Например CHAR_SUM - конкатенация всех значений столбца в одну строку
и FIRST_NOT_NULL - первое значение не NULL (аналог COALESCE, но для столбца, а не списка).

Добавлено: 13 мар 2008, 14:44
WildSery
Только с помощью хранимой процедуры. Имитировать т.е.

Добавлено: 13 мар 2008, 14:58
Gera
т.е. если имеется таблица
COMMENT(
ID_Object INT,
MONTH INT,
DAY INT,
TEXT VARCHAR(100))
и по ней необходимо собрать текст всех комментариев за выбранный месяц, по каждому объекту, то нужно делать курсор по объектам, для каждого выполнить ХП и результаты каждого вызова собрать во временной таблице?

Добавлено: 13 мар 2008, 15:29
stix-s
Gera писал(а): и по ней необходимо собрать текст всех комментариев за выбранный месяц, по каждому объекту,
что значит собрать? в одну сплошную строку чтоли?

Добавлено: 13 мар 2008, 15:35
Gera
Gera писал(а):Подскажите пожалуйста, можно ли в FB 2.0 реализовать свои агрегатные функции.

Например CHAR_SUM - конкатенация всех значений столбца в одну строку
Да, именно в одну строку

Добавлено: 13 мар 2008, 16:12
kdv
В FB 2.1 вроде есть функция list.
Хотя, в теме задачи "выбрать все комментарии за месяц", думаю, не проканает. если коммент varchar(100) (кстати, чего так мало), то даже по 1 шт. в сумме уже будет под 3000 символов. А если не один коммент в день, а больше, то ....

Добавлено: 13 мар 2008, 16:31
Gera
Вообще хочется написать собственную агрегатную функцию и подключить ее к базе, аналогично UDF.

Я не знаю можно ли это в принципе.
Может разработчикам FB написать...

Добавлено: 13 мар 2008, 17:37
kdv
Я не знаю можно ли это в принципе.
нет, это невозможно в принципе. Ни в IB ни в FB. И пока вроде как не планируется.

Добавлено: 13 мар 2008, 18:46
WildSery
Собственно, и нафиг не нужно, потому как взяв курсор FOR SELECT за нужный конец, делается всё что душа поэта возжелает.

Добавлено: 14 мар 2008, 08:42
Gera
Всем спасибо.
Считаю что тему можно закрыть.

Добавлено: 26 мар 2008, 08:33
Gera
Свершилось!
в FireBird v2.1 есть новая агрегатная функция LIST подробности здесь
Она возвращает конкатенацию строкового представления группы, с разделителями (по желанию)

Добавлено: 26 мар 2008, 10:01
kdv
я тебе про нее (list) уже писал.