
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
19.11.2003, 21:53
|
|||
|---|---|---|---|
|
|||
Статистические UDF |
|||
|
#18+
Всем ПРИВЕТ ! У меня возник такой вопрос, ответа на который мне найти не удалось. Можно ли написать статистическую UDF ? Типа SUM(), COUNT(), MIN() и т.д. Все найденые мною примеры описывают создание обычных функций вроде ABS(), COS().... А нужно что-то вроде функции "Среднее арифметическое", только гораздо сложнее, чтобы запрос выглядел так: SELECT STAT_FUNC(FIELD_N) FROM TABLE_T; И возвращал результат в виде одной строки, вне зависимости от количества строк в таблице (как COUNT()). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2003, 01:32
|
|||
|---|---|---|---|
Статистические UDF |
|||
|
#18+
Нет. Но можно просто написать ХП, в которой в цикле обойти все нужные записи и произвести необходимые вычисления. Получить и вернуть результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2003, 16:03
|
|||
|---|---|---|---|
|
|||
Статистические UDF |
|||
|
#18+
Этот способ хорош, если не надо делать группировок. А если запрос выглядит как SELECT STAT_FUNC(FIELD_N) FROM TABLE_T GROUP BY FIELD_A; В варианте с ХП мне придется делать столько запросов к таблице, сколько есть вариатов поля FIELD_A (а если их больше 1000 ????), в результате время выполнения операции значительно возрастает. В варианте с UDF запрос к таблице будет только один и сервак сам выполнит группировку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2003, 16:05
|
|||
|---|---|---|---|
|
|||
Статистические UDF |
|||
|
#18+
Интересно, а предложения по развитию Firebird рассматриваютс ?????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2003, 16:38
|
|||
|---|---|---|---|
Статистические UDF |
|||
|
#18+
Надо писать 2 функции (или три): 1-ю вызывать перед выполнением запроса, а 2-я собственно и должна накапливать статистику. Первой функцией выделяешь память под переменну, инициализируешь её и возвращаешь указатель на выделенную память, а во второй функции вместе с полем, для которого считается статистика, передаёшь этот указатель. После выполнения расчётов надо освободить память или функцией 1, или 3 (смотря как сделаешь). Т.е. я думаю, что если очень нужно, то можно так сделать и использовать это внутри ХП. Ещё в FB2 планируются встроенные функции - может там что-то появится для подобных целей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2003, 18:04
|
|||
|---|---|---|---|
Статистические UDF |
|||
|
#18+
Посмотрю у себя, что-то такое у меня было реализовано (через три дня дам ответ, завтра в комку поеду наверное) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.11.2003, 18:05
|
|||
|---|---|---|---|
Статистические UDF |
|||
|
#18+
>Goor Никаких множественных запросов не надо ! Один проход результатов одного запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.03.2004, 21:06
|
|||
|---|---|---|---|
|
|||
Статистические UDF |
|||
|
#18+
Поделитесь примерчиком или ссылочкой пожалуйста? Пасибо заранее! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=40&mobile=1&tid=1579029]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 265ms |
| total: | 482ms |

| 0 / 0 |
