Funkcje agregujące Canonical

Agregacje to wyrażenia, które zmniejszają serię wartości wejściowych na przykład pojedynczą wartość. Agregacje są zwykle używane w połączeniu z klauzulą GROUP BY wyrażenia SELECT i istnieją ograniczenia dotyczące tego, gdzie można ich używać.

Funkcje kanoniczne Agregacji jednostek SQL

Poniżej przedstawiono agregujące funkcje kanoniczne Entity SQL.

Avg(expression)

Zwraca średnią wartości innych niż null.

Argumenty

An Int32, Int64, Doublei Decimal.

Wartość zwracana

Typ expression, lub null jeśli wszystkie wartości wejściowe są null wartościami.

Przykład

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

BigCount(wyrażenie)

Zwraca rozmiar agregacji, w tym wartości null i zduplikowane.

Argumenty

Dowolny typ.

Wartość zwracana

An Int64.

Przykład

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

Count(expression)

Zwraca rozmiar agregacji, w tym wartości null i zduplikowane.

Argumenty

Dowolny typ.

Wartość zwracana

An Int32.

Przykład

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

Max(wyrażenie)

Zwraca wartość maksymalną wartości innych niż null.

Argumenty

A Byte, , Int32BinaryStringTimeDateTimeOffsetDateTimeDoubleByteDecimalInt16Int64Single.

Wartość zwracana

Typ expression, lub null jeśli wszystkie wartości wejściowe są null wartościami.

Przykład

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

Min(wyrażenie)

Zwraca wartość minimalną wartości innych niż null.

Argumenty

A Byte, , Int32BinaryStringTimeDateTimeOffsetDateTimeDoubleByteDecimalInt16Int64Single.

Wartość zwracana

Typ expression, lub null jeśli wszystkie wartości wejściowe są null wartościami.

Przykład

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

StDev(wyrażenie)

Zwraca odchylenie standardowe wartości innych niż null.

Argumenty

An Int32, , DoubleInt64, Decimal.

Wartość zwracana

Klasa Double. Null, jeśli wszystkie wartości wejściowe są null wartościami.

Przykład

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(wyrażenie)

Zwraca odchylenie standardowe dla populacji wszystkich wartości.

Argumenty

An Int32, , DoubleInt64, Decimal.

Wartość zwracana

Wartość Double, lub null jeśli wszystkie wartości wejściowe są null wartościami.

Przykład

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)

Zwraca sumę wartości innych niż null.

Argumenty

An Int32, , DoubleInt64, Decimal.

Wartość zwracana

Wartość Double, lub null jeśli wszystkie wartości wejściowe są null wartościami.

Przykład

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

Var(expression)

Zwraca wariancję wszystkich wartości innych niż null.

Argumenty

An Int32, , DoubleInt64, Decimal.

Wartość zwracana

Wartość Double, lub null jeśli wszystkie wartości wejściowe są null wartościami.

Przykład

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(wyrażenie)

Zwraca wariancję dla populacji wszystkich wartości innych niż null.

Argumenty

An Int32, , DoubleInt64, Decimal.

Wartość zwracana

Wartość Double, lub null jeśli wszystkie wartości wejściowe są null wartościami.

Przykład

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

Równoważne funkcje są dostępne w programie Microsoft SQL Client Managed Provider. Aby uzyskać więcej informacji, zobacz SqlClient for Entity Framework Functions.Aby uzyskać więcej informacji, zobacz SqlClient for Entity Framework Functions.

Agregacje oparte na kolekcji

Agregacje oparte na kolekcji (funkcje kolekcji) działają na kolekcjach i zwracają wartość. Jeśli na przykład ORDERS jest kolekcją wszystkich zamówień, możesz obliczyć najwcześniejszą datę wysyłki przy użyciu następującego wyrażenia:

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

Wyrażenia wewnątrz agregacji opartych na kolekcji są oceniane w bieżącym zakresie rozpoznawania nazw otoczenia.

Agregacje oparte na grupach

Agregacje oparte na grupach są obliczane dla grupy zgodnie z definicją w klauzuli GROUP BY. Dla każdej grupy w wyniku jest obliczana oddzielna agregacja przy użyciu elementów w każdej grupie jako danych wejściowych do obliczenia agregowanego. Gdy klauzula group-by jest używana w wyrażeniu select, w klauzuli projekcji lub klauzuli order-by mogą znajdować się tylko nazwy wyrażeń grupowania, agregacji lub stałych.

Poniższy przykład oblicza średnią ilość uporządkowaną dla każdego produktu:

select p, avg(ol.Quantity) from LOB.OrderLines as ol
  group by ol.Product as p

Istnieje możliwość agregowania opartego na grupach bez jawnej klauzuli group-by w wyrażeniu SELECT. W tym przypadku wszystkie elementy są traktowane jako pojedyncza grupa. Jest to odpowiednik określania grupowania na podstawie stałej. Weźmy na przykład następujące wyrażenie:

select avg(ol.Quantity) from LOB.OrderLines as ol

Jest to równoważne z następującymi elementami:

select avg(ol.Quantity) from LOB.OrderLines as ol group by 1

Wyrażenia wewnątrz agregacji opartej na grupach są oceniane w zakresie rozpoznawania nazw, który będzie widoczny dla wyrażenia klauzuli WHERE.

Podobnie jak w języku Transact-SQL, agregacje oparte na grupach mogą również określać modyfikator ALL lub DISTINCT. Jeśli określono modyfikator DISTINCT, duplikaty zostaną wyeliminowane z kolekcji zagregowanych danych wejściowych przed obliczeniu agregacji. Jeśli określono modyfikator ALL (lub jeśli nie określono modyfikatora), nie jest wykonywana żadna zduplikowana eliminacja.

Zobacz też