Statistische canonieke functies
Aggregaties zijn expressies die een reeks invoerwaarden beperken tot bijvoorbeeld één waarde. Aggregaties worden normaal gesproken gebruikt in combinatie met de GROUP BY-component van de SELECT-expressie en er zijn beperkingen voor waar ze kunnen worden gebruikt.
Statistische entiteits-SQL-canonieke functies
Hier volgen de statistische entiteits-SQL-canonieke functies.
Avg(expressie)
Retourneert het gemiddelde van de niet-null-waarden.
Argumenten
Een Int32
, Int64
, Double
en Decimal
.
Retourwaarde
Het type expression
, of null
als alle invoerwaarden waarden zijn null
.
Voorbeeld
queryString = @"SELECT VALUE AVG(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE AVG(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
BigCount(expressie)
Retourneert de grootte van de statistische functie, inclusief null- en dubbele waarden.
Argumenten
Elk type.
Retourwaarde
Een Int64
.
Voorbeeld
queryString = @"SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Count(expression)
Retourneert de grootte van de statistische functie, inclusief null- en dubbele waarden.
Argumenten
Elk type.
Retourwaarde
Een Int32
.
Voorbeeld
queryString = @"SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Max(expressie)
Retourneert het maximum van de niet-null-waarden.
Argumenten
A Byte
, Int16
, Int32
, , Int64
, Single
Byte
, , Decimal
Double
, , DateTime
, DateTimeOffset
, Time
, . String
Binary
Retourwaarde
Het type expression
, of null
als alle invoerwaarden waarden zijn null
.
Voorbeeld
queryString = @"SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Min(expressie)
Retourneert het minimum van de niet-null-waarden.
Argumenten
A Byte
, Int16
, Int32
, , Int64
, Single
Byte
, , Decimal
Double
, , DateTime
, DateTimeOffset
, Time
, . String
Binary
Retourwaarde
Het type expression
, of null
als alle invoerwaarden waarden zijn null
.
Voorbeeld
queryString = @"SELECT VALUE MIN(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MIN(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
StDev(expressie)
Retourneert de standaarddeviatie van de niet-null-waarden.
Argumenten
Een Int32
, Int64
, Double
, . Decimal
Retourwaarde
A Double
. Null
, als alle invoerwaarden waarden zijn null
.
Voorbeeld
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(expressie)
Retourneert de standaarddeviatie voor de populatie van alle waarden.
Argumenten
Een Int32
, Int64
, Double
, . Decimal
Retourwaarde
A Double
, of null
als alle invoerwaarden waarden zijn null
.
Voorbeeld
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(expressie)
Retourneert de som van de niet-null-waarden.
Argumenten
Een Int32
, Int64
, Double
, . Decimal
Retourwaarde
A Double
, of null
als alle invoerwaarden waarden zijn null
.
Voorbeeld
queryString = @"SELECT VALUE Sum(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Sum(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Var(expressie)
Retourneert de variantie van alle niet-null-waarden.
Argumenten
Een Int32
, Int64
, Double
, . Decimal
Retourwaarde
A Double
, of null
als alle invoerwaarden waarden zijn null
.
Voorbeeld
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(expressie)
Retourneert de variantie voor de populatie van alle niet-null-waarden.
Argumenten
Een Int32
, Int64
, Double
, . Decimal
Retourwaarde
A Double
, of null
als alle invoerwaarden waarden zijn null
.
Voorbeeld
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
Equivalente functionaliteit is beschikbaar in de beheerde Provider van Microsoft SQL Client. Zie SqlClient voor Entity Framework Functions voor meer informatie.
Aggregaties op basis van verzamelingen
Op verzamelingen gebaseerde aggregaties (verzamelingsfuncties) werken op verzamelingen en retourneren een waarde. Als ORDERS bijvoorbeeld een verzameling van alle orders is, kunt u de vroegste verzenddatum berekenen met de volgende expressie:
min(select value o.ShipDate from LOB.Orders as o)
Expressies binnen op verzameling gebaseerde aggregaties worden geëvalueerd binnen het huidige bereik voor omgevingsnaamomzetting.
Aggregaties op basis van groepen
Op groepen gebaseerde aggregaties worden berekend over een groep zoals gedefinieerd door de GROUP BY-component. Voor elke groep in het resultaat wordt een afzonderlijke aggregaties berekend met behulp van de elementen in elke groep als invoer voor de cumulatieve berekening. Wanneer een group-by-component wordt gebruikt in een select-expressie, kunnen alleen expressienamen, aggregaties of constante expressies worden gegroepeerd in de projectie- of order-by-component.
In het volgende voorbeeld wordt de gemiddelde bestelde hoeveelheid voor elk product berekend:
select p, avg(ol.Quantity) from LOB.OrderLines as ol
group by ol.Product as p
Het is mogelijk om een aggregatie op basis van een groep te hebben zonder een expliciete group-by-component in de SELECT-expressie. In dit geval worden alle elementen behandeld als één groep. Dit is een equivalent van het opgeven van een groepering op basis van een constante. Neem bijvoorbeeld de volgende expressie:
select avg(ol.Quantity) from LOB.OrderLines as ol
Dit komt overeen met het volgende:
select avg(ol.Quantity) from LOB.OrderLines as ol group by 1
Expressies in de op groepen gebaseerde aggregatie worden geëvalueerd binnen het bereik voor naamomzetting dat zichtbaar is voor de WHERE-componentexpressie.
Net als in Transact-SQL kunnen op groepen gebaseerde aggregaties ook een ALL- of DISTINCT-wijzigingsfunctie opgeven. Als de DISTINCT-wijzigingsfunctie is opgegeven, worden duplicaten verwijderd uit de verzameling voor geaggregeerde invoer, voordat de statistische functie wordt berekend. Als de ALL-modifier is opgegeven (of als er geen wijzigingsfunctie is opgegeven), wordt er geen dubbele verwijdering uitgevoerd.