powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Статистические UDF
9 сообщений из 9, страница 1 из 1
Статистические UDF
    #32329422
Goor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем ПРИВЕТ !

У меня возник такой вопрос, ответа на который мне найти не удалось.
Можно ли написать статистическую UDF ? Типа SUM(), COUNT(), MIN() и т.д.
Все найденые мною примеры описывают создание обычных функций вроде ABS(), COS()....
А нужно что-то вроде функции "Среднее арифметическое", только гораздо сложнее, чтобы запрос выглядел так:
SELECT STAT_FUNC(FIELD_N) FROM TABLE_T;
И возвращал результат в виде одной строки, вне зависимости от количества строк в таблице (как COUNT()).
...
Рейтинг: 0 / 0
Статистические UDF
    #32329497
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. Но можно просто написать ХП, в которой в цикле обойти все нужные записи и произвести необходимые вычисления. Получить и вернуть результат.
...
Рейтинг: 0 / 0
Статистические UDF
    #32330379
Goor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот способ хорош, если не надо делать группировок.
А если запрос выглядит как
SELECT STAT_FUNC(FIELD_N) FROM TABLE_T GROUP BY FIELD_A;
В варианте с ХП мне придется делать столько запросов к таблице, сколько есть вариатов поля FIELD_A (а если их больше 1000 ????), в результате время выполнения операции значительно возрастает.
В варианте с UDF запрос к таблице будет только один и сервак сам выполнит группировку.
...
Рейтинг: 0 / 0
Статистические UDF
    #32330382
Goor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно, а предложения по развитию Firebird рассматриваютс ??????
...
Рейтинг: 0 / 0
Статистические UDF
    #32330462
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо писать 2 функции (или три): 1-ю вызывать перед выполнением запроса, а 2-я собственно и должна накапливать статистику. Первой функцией выделяешь память под переменну, инициализируешь её и возвращаешь указатель на выделенную память, а во второй функции вместе с полем, для которого считается статистика, передаёшь этот указатель.
После выполнения расчётов надо освободить память или функцией 1, или 3 (смотря как сделаешь).
Т.е. я думаю, что если очень нужно, то можно так сделать и использовать это внутри ХП.

Ещё в FB2 планируются встроенные функции - может там что-то появится для подобных целей.
...
Рейтинг: 0 / 0
Статистические UDF
    #32330623
Фотография KiLLun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрю у себя, что-то такое у меня было реализовано (через три дня дам ответ, завтра в комку поеду наверное)
...
Рейтинг: 0 / 0
Статистические UDF
    #32330626
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Goor

Никаких множественных запросов не надо ! Один проход результатов одного запроса.
...
Рейтинг: 0 / 0
Статистические UDF
    #32442608
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поделитесь примерчиком или ссылочкой пожалуйста? Пасибо заранее!
...
Рейтинг: 0 / 0
Статистические UDF
    #32443536
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoorИнтересно, а предложения по развитию Firebird рассматриваются

Если есть желание/возможность посодействовать на эту тему, то пиши мне в мыло.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Статистические UDF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]