Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 SQL dla podmiotów agregacyjnych
Poniżej przedstawiono skumulowane funkcje kanoniczne Entity SQL.
Avg(expression)
Zwraca średnią wartości innych niż null.
Argumenty
An Int32
, Int64
, Double
i Decimal
.
Zwracana wartość
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 liczbę elementów agregacji, w tym wartości null i zduplikowane.
Argumenty
Dowolny typ.
Zwracana wartość
Jeden Int64
.
Przykład
queryString = @"SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Licz(wyrażenie)
Zwraca liczbę elementów agregacji, w tym wartości null i zduplikowane.
Argumenty
Dowolny typ.
Zwracana wartość
Jeden 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 maksymalną spośród wartości nienullowych.
Argumenty
A Byte
, , Int16
Int32
Int64
Byte
Single
Double
Decimal
DateTime
DateTimeOffset
Time
String
Binary
.
Zwracana wartość
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ą spośród wartości różnych od null.
Argumenty
A Byte
, , Int16
Int32
Int64
Byte
Single
Double
Decimal
DateTime
DateTimeOffset
Time
String
Binary
.
Zwracana wartość
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
, , Int64
Double
, Decimal
.
Zwracana wartość
Element 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
, , Int64
Double
, Decimal
.
Zwracana wartość
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
Suma(expression)
Zwraca sumę wartości innych niż null.
Argumenty
An Int32
, , Int64
Double
, Decimal
.
Zwracana wartość
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
, , Int64
Double
, Decimal
.
Zwracana wartość
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
, , Int64
Double
, Decimal
.
Zwracana wartość
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ą zamówioną ilość 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.