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
, Double
i 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
, , Int32
Binary
String
Time
DateTimeOffset
DateTime
Double
Byte
Decimal
Int16
Int64
Single
.
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
, , Int32
Binary
String
Time
DateTimeOffset
DateTime
Double
Byte
Decimal
Int16
Int64
Single
.
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
, , Double
Int64
, 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
, , Double
Int64
, 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
, , Double
Int64
, 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
, , Double
Int64
, 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
, , Double
Int64
, 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.