集計正規関数
集計とは、一連の入力値をまとまった値 (単一の値など) に変換する式を指します。 集計は SELECT 式の GROUP BY 句と組み合わせて使用されるのが一般的であり、どこで使用できるかについては制約があります。
集計 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 クライアント マネージド プロバイダーでも利用できます。 詳細については、「Entity Framework 用 SqlClient 関数」を参照してください。
コレクションベースの集計
コレクションベースの集計 (コレクション関数) は、コレクションに対して演算を実行して、値を返します。 たとえば、ORDERS がすべての注文のコレクションである場合、次の式を使って、最も早い出荷日を計算できます。
min(select value o.ShipDate from LOB.Orders as o)
コレクションベースの集計では、現在の周囲の名前解決スコープ内で式が評価されます。
グループベースの集計
グループベースの集計では、GROUP BY 句によって定義されたグループごとに計算が実行されます。 その結果の各グループについて、それぞれのグループ内の要素を、集計計算の入力として使って別個の集計が計算されます。 select 式で group by 句を使用した場合、投影または 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 修飾子が指定された場合 (または修飾子が指定されなかった場合)、重複は除外されません。