Статистические канонические функции

Статистические выражения - выражения, которые уменьшают количество входных значений, например, до одного значения. Статистические выражения обычно используются совместно с предложением группирования GROUP BY выражения SELECT, а на область их использования накладываются ограничения.

Канонические функции Агрегатной сущности SQL

Ниже приведены канонические функции Entity SQL.

Avg(expression)

Возвращает среднее для значений, отличных от NULL.

Аргументы

, Int32и Int64DoubleDecimal.

Возвращаемое значение

Тип expressionnull или если все входные значения являются null значениями.

Пример

queryString = @"SELECT VALUE AVG(p.ListPrice)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE AVG(p.ListPrice) 
FROM AdventureWorksEntities.Products AS p 

BigCount(expression)

Возвращает объем данных, подвергаемых статистической обработке, включая значения NULL и повторяющиеся значения.

Аргументы

Любой тип.

Возвращаемое значение

Объект Int64.

Пример

queryString = @"SELECT VALUE BigCount(p.ProductID)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE BigCount(p.ProductID) 
FROM AdventureWorksEntities.Products AS p 

Count(expression)

Возвращает объем данных, подвергаемых статистической обработке, включая значения NULL и повторяющиеся значения.

Аргументы

Любой тип.

Возвращаемое значение

Объект Int32.

Пример

queryString = @"SELECT VALUE Count(p.ProductID)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE Count(p.ProductID) 
FROM AdventureWorksEntities.Products AS p 

Max(expression)

Возвращает максимум для значений, отличных от NULL.

Аргументы

Значения типа Byte, Int16, Int32, Int64, Byte, Single, Double, Decimal, DateTime, DateTimeOffset, Time, String, Binary.

Возвращаемое значение

Тип expressionnull или если все входные значения являются null значениями.

Пример

queryString = @"SELECT VALUE MAX(p.ListPrice)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE MAX(p.ListPrice) 
FROM AdventureWorksEntities.Products AS p 

Min(expression)

Возвращает минимум для значений, отличных от NULL.

Аргументы

Значения типа Byte, Int16, Int32, Int64, Byte, Single, Double, Decimal, DateTime, DateTimeOffset, Time, String, Binary.

Возвращаемое значение

Тип expressionnull или если все входные значения являются null значениями.

Пример

queryString = @"SELECT VALUE MIN(p.ListPrice)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE MIN(p.ListPrice) 
FROM AdventureWorksEntities.Products AS p 

StDev(expression)

Возвращает стандартное отклонение для значений, отличных от NULL.

Аргументы

Имеют типы Int32, Int64, Double и Decimal.

Возвращаемое значение

Double. Возвращает Null, если все входные значения представляют собой значения null.

Пример

queryString = @"SELECT VALUE StDev(product.ListPrice)
    FROM AdventureWorksEntities.Products AS product
    WHERE product.ListPrice > @price";
SELECT VALUE StDev(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

StDevP(expression)

Возвращает стандартное отклонение для заполнения по всем значениям.

Аргументы

Имеют типы Int32, Int64, Double и Decimal.

Возвращаемое значение

null Или Doubleесли все входные значения являются null значениями.

Пример

queryString = @"SELECT VALUE StDevP(product.ListPrice)
    FROM AdventureWorksEntities.Products AS product
    WHERE product.ListPrice > @price";
SELECT VALUE StDevP(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

Sum(expression)

Возвращает сумму для значений, отличных от NULL.

Аргументы

Имеют типы Int32, Int64, Double и Decimal.

Возвращаемое значение

null Или Doubleесли все входные значения являются null значениями.

Пример

queryString = @"SELECT VALUE Sum(p.ListPrice)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE Sum(p.ListPrice) 
FROM AdventureWorksEntities.Products AS p 

Var(expression)

Возвращает дисперсию всех значений, отличных от NULL.

Аргументы

Имеют типы Int32, Int64, Double и Decimal.

Возвращаемое значение

null Или Doubleесли все входные значения являются null значениями.

Пример

queryString = @"SELECT VALUE Var(product.ListPrice)
    FROM AdventureWorksEntities.Products AS product
    WHERE product.ListPrice > @price";
SELECT VALUE Var(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

VarP(expression)

Возвращает дисперсию для заполнения по всем значениям, отличным от NULL.

Аргументы

Имеют типы Int32, Int64, Double и Decimal.

Возвращаемое значение

null Или Doubleесли все входные значения являются null значениями.

Пример

queryString = @"SELECT VALUE VarP(product.ListPrice)
    FROM AdventureWorksEntities.Products AS product
    WHERE product.ListPrice > @price";
SELECT VALUE VarP(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

Эквивалентную функциональность предоставляет управляемый поставщик клиента Microsoft SQL. Дополнительные сведения см. в разделе SqlClient для функций Entity Framework.

Агрегаты на основе коллекции

Статистические функции на основе коллекций (функции коллекций) работают с коллекциями и возвращают значение. Например, если ORDERS представляет собой коллекцию всех заказов, можно вычислить самую раннюю дату доставки со следующим выражением:

min(select value o.ShipDate from LOB.Orders as o)

Выражения внутри статистических функций на основе коллекций вычисляются в текущей внешней области разрешения имен.

Агрегаты на основе групп

Статистические функции на основе групп вычисляются для группы, определенной предложением GROUP BY. Для каждой группы результата выполняется отдельное статистическое вычисление с использованием элементов каждой группы в качестве входных значений. Если в выражении SELECT используется предложение группирования, в проекции или предложении сортировки могут употребляться только имена выражений группирования, статистические функции или константные выражения.

В следующем примере вычисляется средняя величина заказа для каждого продукта.

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

Выражения внутри статистической функции на основе групп вычисляются в области разрешения имен, видимой для выражения предложения WHERE.

Как и в Transact-SQL, агрегаты на основе групп также могут указывать модификатор ALL или DISTINCT. Если задан модификатор DISTINCT, то перед вычислением статистической функции из входного набора исключаются повторяющиеся значения. Если задан модификатор ALL (или не указан никакой модификатор), то исключение повторяющихся значений не выполняется.

См. также