Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Агрегат — это конструкция языка, которая конденсирует коллекцию в скаляр в рамках групповой операции. Агрегаты Entity SQL доступны в двух формах:
Функции коллекции Entity SQL, которые могут использоваться в любом месте выражения. Это включает использование агрегатных функций в проекциях и предикатах, которые действуют в коллекциях. Функции коллекции — это предпочтительный режим указания агрегатов в Entity SQL.
Группирует статистические выражения в выражениях запросов с предложением GROUP BY. Как и в Transact-SQL, группы агрегаты принимают DISTINCT и ALL в качестве модификаторов для агрегированных входных данных.
Entity SQL сначала пытается интерпретировать выражение как функцию коллекции и если выражение находится в контексте выражения SELECT, интерпретирует его как агрегат группы.
Entity SQL определяет специальный оператор агрегата с именем GROUPPARTITION. Этот оператор позволяет получить ссылку на группованный входной набор. Это позволяет выполнять более сложные запросы группирования, где результаты предложения GROUP BY можно использовать в местах, отличных от функций статистической обработки или сбора групп.
Функции коллекции
Функции коллекции работают с коллекциями и возвращают скалярное значение. Например, если orders это коллекция всех orders, можно вычислить самую раннюю дату доставки со следующим выражением:
min(select value o.ShipDate from LOB.Orders as o)
Агрегаты групп
Агрегаты групп вычисляются по результату группы, определенному предложением GROUP BY. Предложение GROUP BY секционирует данные в группы. Для каждой группы в результатах применяется агрегатная функция, а отдельный агрегат вычисляется с помощью элементов в каждой группе в качестве входных данных для статистического вычисления. Если предложение GROUP BY используется в выражении SELECT, в предложении ORDER BY могут присутствовать только имена выражений группировки, агрегаты или константы.
В следующем примере вычисляется среднее количество, упорядоченное для каждого продукта.
select p, avg(ol.Quantity) from LOB.OrderLines as ol
group by ol.Product as p
Агрегирование групп можно использовать без явного предложения GROUP BY в выражении SELECT. Все элементы будут рассматриваться как отдельная группа, эквивалентная регистру указания группировки на основе константы.
select avg(ol.Quantity) from LOB.OrderLines as ol
select avg(ol.Quantity) from LOB.OrderLines as ol group by 1
Выражения, используемые в предложении GROUP BY, оцениваются с помощью той же области разрешения имен, которая будет видна выражению предложения WHERE.