彙總標準函式
彙總 (Aggregate) 是指將一連串輸入值縮減成單一值的運算式。 彙總通常會與 SELECT 運算式的 GROUP BY 子句搭配使用,而且它們的使用位置具有一些條件約束 (Constraint)。
彙總 Entity SQL 標準函式
以下是彙總 Entity SQL 標準函式。
Avg(expression)
傳回非 null 值的平均。
引數
Int32
、Int64
、Double
和 Decimal
。
傳回值
expression
的類型,如果所有輸入值都是 null
值,則為 null
。
範例
queryString = @"SELECT VALUE AVG(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE AVG(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
BigCount(expression)
傳回包含 null 和重複值的彙總大小。
引數
任何型別。
傳回值
Int64
。
範例
queryString = @"SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Count(expression)
傳回包含 null 和重複值的彙總大小。
引數
任何型別。
傳回值
Int32
。
範例
queryString = @"SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Max(expression)
傳回非 null 值的最大值。
引數
Byte
、Int16
、Int32
、Int64
、Byte
、Single
、Double
、Decimal
、DateTime
、DateTimeOffset
、Time
、String
、Binary
。
傳回值
expression
的類型,如果所有輸入值都是 null
值,則為 null
。
範例
queryString = @"SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Min(expression)
傳回非 null 值的最小值。
引數
Byte
、Int16
、Int32
、Int64
、Byte
、Single
、Double
、Decimal
、DateTime
、DateTimeOffset
、Time
、String
、Binary
。
傳回值
expression
的類型,如果所有輸入值都是 null
值,則為 null
。
範例
queryString = @"SELECT VALUE MIN(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MIN(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
StDev(expression)
傳回非 Null 值的標準差。
引數
Int32
、Int64
、Double
、Decimal
。
傳回值
Double
。 如果所有輸入值是 Null
值,則為 null
。
範例
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)
傳回所有值的母體擴展標準差。
引數
Int32
、Int64
、Double
、Decimal
。
傳回值
Double
,如果所有輸入值都是 null
值,則為 null
。
範例
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)
傳回非 null 值的總和。
引數
Int32
、Int64
、Double
、Decimal
。
傳回值
Double
,如果所有輸入值都是 null
值,則為 null
。
範例
queryString = @"SELECT VALUE Sum(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Sum(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Var(expression)
傳回所有非 NULL 值的變異數。
引數
Int32
、Int64
、Double
、Decimal
。
傳回值
Double
,如果所有輸入值都是 null
值,則為 null
。
範例
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(expression)
傳回所有非 NULL 值的母體變異數。
引數
Int32
、Int64
、Double
、Decimal
。
傳回值
Double
,如果所有輸入值都是 null
值,則為 null
。
範例
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
Microsoft SQL Client Managed Provider 中提供了對等的功能。 如需詳細資訊,請參閱 Entity Framework 函式的 SqlClient。
以集合為基礎的彙總
以集合為基礎的彙總 (集合函式) 會針對集合運作並傳回一個值。 例如,如果 ORDERS 是所有訂單的集合,您就可以使用下列運算式來計算最早出貨日期:
min(select value o.ShipDate from LOB.Orders as o)
以集合為基礎之彙總內部的運算式是在目前的環境名稱解析範圍內評估。
以群組為基礎的彙總
以群組為基礎的彙總會計算 GROUP BY 子句所定義的整個群組。 系統會針對結果中的每個群組,使用每個群組中的項目當做彙總計算的輸入來計算個別的彙總。 當 group-by 子句用於 select 運算式時,只有群組運算式名稱、彙總或常數運算式可以出現在投影或 order-by 子句中。
下列範例會計算針對每個產品訂購的平均數量:
select p, avg(ol.Quantity) from LOB.OrderLines as ol
group by ol.Product as p
您可以在 SELECT 運算式中使用以群組為基礎的彙總,但不使用明確的 group-by 子句。 在此情況下,所有元素都會被視為單一群組。 這就相當於根據常數指定群組。 以下列運算式為例:
select avg(ol.Quantity) from LOB.OrderLines as ol
這個運算式就相當於下列運算式:
select avg(ol.Quantity) from LOB.OrderLines as ol group by 1
以群組為基礎之彙總內部的運算式是在 WHERE 子句運算式可見的名稱解析範圍內評估。
如同在 Transact-SQL 中,以群組為基礎的彙總也可以指定 ALL 或 DISTINCT 修飾詞。 如果有指定 DISTINCT 修飾詞,系統就會在計算彙總之前,從彙總輸入集合中刪除重複項目。 如果指定的是 ALL 修飾詞 (或沒有指定任何修飾詞),就不會執行重複項目刪除作業。