Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Agregace jsou výrazy, které snižují řadu vstupních hodnot, například do jedné hodnoty. Agregace se obvykle používají ve spojení s klauzulí GROUP BY výrazu SELECT a existují omezení, kde je lze použít.
Kanonické agregační funkce ENTITY SQL
Následuje agregační kanonické funkce Entity SQL.
Avg(expression)
Vrátí průměr hodnot, které nejsou null.
Argumenty
A Int32
, Int64
, Double
, a Decimal
.
návratová hodnota
Typ expression
, nebo null
pokud jsou všechny vstupní hodnoty hodnoty null
.
Příklad
queryString = @"SELECT VALUE AVG(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE AVG(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
BigCount(výraz)
Vrátí velikost agregace včetně hodnot null a duplicitních hodnot.
Argumenty
Libovolný typ.
návratová hodnota
Nějaký Int64
.
Příklad
queryString = @"SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Počet(výraz)
Vrátí velikost agregace včetně hodnot null a duplicitních hodnot.
Argumenty
Libovolný typ.
návratová hodnota
Nějaký Int32
.
Příklad
queryString = @"SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Max(výraz)
Vrátí maximum hodnot, které nejsou null.
Argumenty
A Byte
, Int16
, , Int32
, Int64
, Byte
, Single
Double
Decimal
DateTime
DateTimeOffset
Time
String
. Binary
návratová hodnota
Typ expression
, nebo null
pokud jsou všechny vstupní hodnoty hodnoty null
.
Příklad
queryString = @"SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Min(výraz)
Vrátí minimum hodnot, které nejsou null.
Argumenty
A Byte
, Int16
, , Int32
, Int64
, Byte
, Single
Double
Decimal
DateTime
DateTimeOffset
Time
String
. Binary
návratová hodnota
Typ expression
, nebo null
pokud jsou všechny vstupní hodnoty hodnoty null
.
Příklad
queryString = @"SELECT VALUE MIN(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MIN(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
StDev(expression)
Vrátí směrodatnou odchylku hodnot, které nejsou null.
Argumenty
An Int32
, , Int64
Double
, Decimal
.
návratová hodnota
Nějaké Double
.
Null
, pokud jsou všechny vstupní hodnoty null
hodnotami.
Příklad
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)
Vrátí směrodatnou odchylku pro populaci všech hodnot.
Argumenty
An Int32
, , Int64
Double
, Decimal
.
návratová hodnota
A Double
, nebo null
, pokud jsou všechny vstupní hodnoty null
.
Příklad
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
Součet(výraz)
Vrátí součet hodnot, které nejsou null.
Argumenty
An Int32
, , Int64
Double
, Decimal
.
návratová hodnota
A Double
, nebo null
, pokud jsou všechny vstupní hodnoty null
.
Příklad
queryString = @"SELECT VALUE Sum(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Sum(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Var(výraz)
Vrátí odchylku všech hodnot, které nejsou null.
Argumenty
An Int32
, , Int64
Double
, Decimal
.
návratová hodnota
A Double
, nebo null
, pokud jsou všechny vstupní hodnoty null
.
Příklad
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(výraz)
Vrátí rozptyl základního souboru všech hodnot, které nejsou nulové.
Argumenty
An Int32
, , Int64
Double
, Decimal
.
návratová hodnota
A Double
, nebo null
, pokud jsou všechny vstupní hodnoty null
.
Příklad
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
Ekvivalentní funkce jsou k dispozici ve zprostředkovateli spravovaném klientem Microsoft SQL. Další informace naleznete v tématu SqlClient for Entity Framework Functions.
Agregace založené na kolekcích
Agregace založené na kolekcích (funkce kolekce) pracují s kolekcemi a vracejí hodnotu. Pokud je například orders kolekce všech objednávek, můžete vypočítat nejstarší datum expedice pomocí následujícího výrazu:
min(select value o.ShipDate from LOB.Orders as o)
Výrazy uvnitř agregací založených na kolekci se vyhodnocují v rámci aktuálního rozsahu překladu názvů.
Agregace založené na skupinách
Agregace založené na skupinách se počítají přes skupinu definovanou klauzulí GROUP BY. Pro každou skupinu ve výsledku se vypočítá samostatná agregace pomocí prvků v každé skupině jako vstupu do agregovaného výpočtu. Pokud se klauzule “group-by” používá ve výrazu “select”, můžou být v klauzuli projekce nebo klauzuli “order-by” přítomny pouze názvy seskupovacích výrazů, agregace nebo konstantní výrazy.
Následující příklad vypočítá průměrné množství objednané pro každý produkt:
select p, avg(ol.Quantity) from LOB.OrderLines as ol
group by ol.Product as p
Ve výrazu SELECT je možné mít agregaci založenou na skupině bez explicitní klauzule group-by. V tomto případě se všechny prvky považují za jednu skupinu. To je ekvivalent určení seskupení na základě konstanty. Vezměte například následující výraz:
select avg(ol.Quantity) from LOB.OrderLines as ol
To odpovídá následujícímu:
select avg(ol.Quantity) from LOB.OrderLines as ol group by 1
Výrazy uvnitř agregace založené na skupině se vyhodnocují v oboru rozlišení názvů, který by byl viditelný pro výraz klauzule WHERE.
Stejně jako v transact-SQL mohou agregace založené na skupinách také určit modifikátor ALL nebo DISTINCT. Pokud je zadán modifikátor DISTINCT, duplicity jsou vyloučeny z agregované vstupní kolekce před tím, než se agregace vypočítá. Je-li zadán modifikátor ALL (nebo pokud není zadán žádný modifikátor), neprovádí se žádná duplicitní eliminace.