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

start [/forum/topic.php?fid=40&msg=32443536&tid=1579029]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 398ms |

| 0 / 0 |
