Агрегатные функции
Агрегатная функция выполняет вычисление набора значений и возвращает значение. Это позволяет создавать сводную статистику для многоуровневых групп с небольшими затратами.
Сведения об агрегатных функциях
Агрегатные функции в windows Search язык SQL (SQL) имеют следующий синтаксис:
AGGREGATE <function> [AS <label>] [,<function> [AS <label>]]*
Часть функции может включать в себя любую из следующих функций и синтаксиса:
Функция | Описание |
---|---|
AVG(<столбец>) | Возвращает среднее арифметическое значений в группе. Применяется только к числам. |
BYFREQUENCY(<column>, <N>) | Возвращает наиболее частые значения N столбцов из результатов в группе. Кроме того, включает количество значений и идентификаторы документов для результатов, содержащих каждое возвращаемое значение. |
CHILDCOUNT() | Возвращает количество элементов в группе (за исключением подгрупп). При наличии нескольких уровней группирования возвращается количество непосредственных дочерних групп. |
COUNT() | Возвращает количество элементов в группе и всех подгруппах. |
DATERANGE(<column>) | Возвращает нижние и верхние границы значений столбцов, найденных в группе результатов группы. Допустимо только для свойств filetime. |
FIRST(<column>, <N>) | Возвращает первые значения N столбцов из конечных результатов, найденных в группе. |
MAX(<столбец>) | Возвращает максимальное значение выражения. Применяется только к числам или датам. |
MIN(<столбец>) | Возвращает минимальное значение выражения. Применяется только к числам или датам. |
REPRESENTATIVEOF(<column>, <idRepresentative>, <N>) | Возвращает N значений idRepresentative, каждое из которых выбрано из одного из результирующих подмножеств с уникальным значением столбца. Каждое значение также возвращается с идентификатором документа, который имеет значение idRepresentative. |
SUM(<столбец>) | Возвращает сумму значений в группе. Применяется только к числам. |
Примечание
Статистические выражения возвращаются в виде отдельных столбцов. В основном это простые типы, за исключением ByFrequency, First, DateRange и RepresentativeOf, которые возвращаются как составные типы.
Для агрегирования можно использовать любой числовой столбец или столбец даты, а не только те, которые находятся в предложении SELECT. Однако нельзя группировать по агрегатам. Если переданный аргумент столбца не является числовым или типом даты, возвращается синтаксическая ошибка.
Часть метки является необязательной и предоставляет более удобочитаемый псевдоним для метки. Если метка псевдонима не включена, Windows Search преобразует имя функции и столбца в метку. Например, MAX(System.Document.WordCount) становится MAX_SystemDocumentWordCount.
Многоуровневые группы и подсчет
Статистические выражения определяются по листьям и дублируются. Агрегат принимает в качестве входных данных листья группы, которая определяет ее (документы), а не подгруппы ее дочерних элементов. Эта функция называется многоуровневой группировкой.
Помимо статистических выражений, которые определяются по листьям и дублируются, они учитываются только один раз. Хотя один и тот же документ может быть представлен несколько раз в одной группе, статистические выражения будут рассматривать его только один раз. Эта концепция показана на следующем рисунке.
Примеры статистической обработки
Ниже приведены примеры агрегатных функций в предложении GROUP ON:
GROUP ON System.Sender ['d','m','r']
AGGREGATE COUNT() as 'Total',
MAX(System.Size) as 'Max Size',
MIN(System.Size) as 'Min Size'
OVER (SELECT System.Subject FROM systemindex)
GROUP ON System.Sender ['d', 'm', 'r']
AGGREGATE MAX(System.Search.Rank) as 'MaxRank',
MIN(System.Search.Rank) as 'MinRank'
OVER (GROUP ON system.conversationID
OVER (SELECT workid, System.ItemUrl FROM systemindex
WHERE CONTAINS (*, 'sometext')
ORDER BY System.DateCreated))
GROUP ON System.FileName [before('a'),before('z')]
AGGREGATE MAX(System.Size) as 'maxsize', MIN(System.Size) as 'MinSize'
OVER (SELECT System.FileName FROM systemindex
ORDER BY System.FileName)
GROUP ON System.author
AGGREGATE MAX(System.size) as 'maxsize'
ORDER BY min(System.Size)
OVER (GROUP ON System.DateCreated
AGGREGATE Count()
ORDER BY MAX(System.size)
OVER (SELECT filename, System.DateCreated, System.Size FROM systemindex
WHERE CONTAINS('text')))
Возвращаемое значение
Возвращаемое значение является вариантом, найденным в наборе строк в виде настраиваемого свойства, либо в виде указанных псевдонимов, либо как "Агрегаты", если метка псевдонима не указана.