Агрегатные функции
Агрегатная функция выполняет вычисление по набору значений и возвращает значение. Это позволяет создавать сводную статистику для групп с несколькими уровнями с небольшими затратами.
Сведения о агрегатных функциях
Агрегатные функции в языке структурированных запросов Поиска Windows (SQL) имеют следующий синтаксис:
AGGREGATE <function> [AS <label>] [,<function> [AS <label>]]*
Часть функции может включать любые из следующих функций и синтаксиса:
Функция | Описание |
---|---|
AVG(<столбца>) | Возвращает среднее значение в группе. Применяется только к числам. |
BYFREQUENCY(<столбца>, <N>) | Возвращает наиболее частые значения столбцов N из результатов в группе. Также включает в себя количество раз, сколько раз каждое значение произошло и идентификаторы документов для результатов, содержащих каждое возвращаемое значение. |
CHILDCOUNT() | Возвращает количество элементов в группе (за исключением подгрупп). Если существует несколько уровней группировки, это возвращает количество непосредственных дочерних групп. |
COUNT() | Возвращает количество элементов в группе и всех подгруппах. |
DATERANGE( столбец<столбца>) | Возвращает нижние и верхние границы значений столбцов, найденных в группе результатов группы. Допустимо только для свойств filetime. |
FIRST(<столбца>, <N>) | Возвращает первые значения столбцов N из конечных результатов, найденных в группе. |
MAX(<столбца>) | Возвращает максимальное значение в выражении. Применяется только к числам или датам. |
MIN(<столбца>) | Возвращает минимальное значение в выражении. Применяется только к числам или датам. |
REPRESENTATIVEOF(>столбца<, <idRepresentative>, <N>) | Возвращает значения N idRepresentative, каждый из выбранных из одного из подмножеств результатов с уникальным значением столбца. Каждое значение также возвращается с идентификатором документа, который имеет значение idRepresentative. |
SUM( столбец<столбца>) | Возвращает сумму значений в группе. Применяется только к числам. |
Заметка
Агрегаты возвращаются в виде отдельных столбцов. Они в основном простые типы, за исключением ByFrequency, First, DateRange и RepresentativeOf, которые возвращаются как составные типы.
Для агрегирования можно использовать любой числовый столбец или столбец даты, а не только те, которые находятся в предложении SELECT. Однако нельзя группировать по агрегатам. Ошибка синтаксиса возвращается, если аргумент столбца, переданный в, не является числовым или типом даты.
Часть метки является необязательной и предоставляет более удобочитаемый псевдоним для метки. Если вы не включаете метку псевдонима, поиск Windows преобразует имя функции и столбца в метку. Например, 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')))
Возвращаемое значение
Возвращаемое значение — это вариант, найденный в наборе строк как настраиваемое свойство, либо как указанные псевдонимы, либо как "Агрегаты", если метка псевдонима не указана.