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

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

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

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

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


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