Разница между скалярными функциями SQL и агрегатными функциями SQL в SQLite - PullRequest
1 голос
/ 17 июля 2011

Какова точная разница между скалярными функциями SQL и агрегатными функциями SQL в SQLite?

При попытке создать новую функцию в SQLite возникает проблема со следующим кодом:

 int sqlite3_create_function(
     sqlite3 *db,
     const char *zFunctionName,
     int nArg,
     int eTextRep,
     void *pApp,
     void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
     void (*xStep)(sqlite3_context*,int,sqlite3_value**),
     void (*xFinal)(sqlite3_context*)
 );

Для скалярной функции SQL xStep и xFinal должны быть нулевыми, а для агрегатной функции SQL xFunc должно быть нулевым.Мне нужно знать, какой использовать, и в чем разница.

1 Ответ

14 голосов
/ 17 июля 2011

A скаляр функция - это функция, которая работает с скаляр значениями, то есть она принимает одно (или более) входных значений в качестве аргументов напрямую и возвращает значение.

агрегатная функция - это функция, которая работает с агрегированными данными - то есть она принимает полный набор данных в качестве входных данных и возвращает значение, которое вычисляется из всех значений в наборе.

Кстати, это стандартные определения «скаляр» и «агрегат», которые вы можете найти в любом словаре, и все эти ссылки входят в пятерку лучших результатов поиска Google, если вы ищете «скалярная функция» и « агрегатная функция ". Это нормально, мы хотим, чтобы StackOverflow стал «окончательным» ответом на подобные вопросы , но в интересах «научить человека ловить рыбу» я вынужден напомнить вам, что вы должны сделать свою домашнюю работу до того, как просить других людей помочь ответить на ваши вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...