Sdílet prostřednictvím


Agregační kanonické funkce

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.

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, Doublea Decimal.

Návratová hodnota

Typ nebo expressionnull pokud všechny vstupní hodnoty jsou null hodnoty.

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

A Int64.

Příklad

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

Count(expression)

Vrátí velikost agregace včetně hodnot null a duplicitních hodnot.

Argumenty

Libovolný typ.

Návratová hodnota

A 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, DoubleSingleStringDateTimeDecimalDateTimeOffsetTime. Binary

Návratová hodnota

Typ nebo expressionnull pokud všechny vstupní hodnoty jsou null hodnoty.

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, DoubleSingleStringDateTimeDecimalDateTimeOffsetTime. Binary

Návratová hodnota

Typ nebo expressionnull pokud všechny vstupní hodnoty jsou null hodnoty.

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, , DoubleInt64, Decimal.

Návratová hodnota

Úloha Double. Null, pokud jsou null všechny vstupní hodnoty 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 základního souboru všech hodnot.

Argumenty

An Int32, , DoubleInt64, Decimal.

Návratová hodnota

A Doublenebo null pokud jsou všechny vstupní hodnoty null hodnotami.

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

Sum(expression)

Vrátí součet hodnot, které nejsou null.

Argumenty

An Int32, , DoubleInt64, Decimal.

Návratová hodnota

A Doublenebo null pokud jsou všechny vstupní hodnoty null hodnotami.

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, , DoubleInt64, Decimal.

Návratová hodnota

A Doublenebo null pokud jsou všechny vstupní hodnoty null hodnotami.

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í odchylku základního souboru všech hodnot, které nejsou null.

Argumenty

An Int32, , DoubleInt64, Decimal.

Návratová hodnota

A Doublenebo null pokud jsou všechny vstupní hodnoty null hodnotami.

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é na kolekci se vyhodnocují v aktuálním rozsahu překladu okolních 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 projekci nebo klauzuli order-by přítomny pouze názvy výrazů seskupení, 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 překladu 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.

Viz také