次の方法で共有


集計正規関数 (Entity SQL)

集計とは、一連の入力値をまとまった値 (単一の値など) に変換する式を指します。 集計は SELECT 式の GROUP BY 句と組み合わせて使用されるのが一般的であり、どこで使用できるかについては制約があります。

次の表に、集計 Entity SQL 正規関数を示します。

機能 Description

Avg( expression )

NULL 以外の値の平均を返します。

引数

An Int32, Int64, Double, and Decimal.

戻り値

expression の型。 すべての入力値が null の場合は Null です。

SELECT VALUE AVG(p.ListPrice) FROM AdventureWorksEntities.Products as p 

BigCount( expression )

NULL 値および重複値を含む集計のサイズを返します。

引数

任意の型。

戻り値

Int64

SELECT VALUE BigCount(p.ProductID) FROM AdventureWorksEntities.Products as p 

Count( expression )

NULL 値および重複値を含む集計のサイズを返します。

引数

任意の型。

戻り値

Int32

SELECT VALUE Count(p.ProductID) FROM AdventureWorksEntities.Products as p 

Max( expression )

NULL 以外の値の最大値を返します。

引数

ByteInt16Int32Int64ByteSingleDoubleDecimalDateTimeDateTimeOffsetTimeStringBinary

戻り値

expression の型。 すべての入力値が null の場合は Null です。

SELECT VALUE MAX(p.ListPrice) FROM AdventureWorksEntities.Products as p 

Min( expression )

NULL 以外の値の最小値を返します。

引数

ByteInt16Int32Int64ByteSingleDoubleDecimalDateTimeDateTimeOffsetTimeStringBinary

戻り値

expression の型。 すべての入力値が null の場合は Null です。

SELECT VALUE MIN(p.ListPrice) FROM AdventureWorksEntities.Products as p 

StDev( expression )

NULL 以外の値の標準偏差を返します。

引数

Int32Int64DoubleDecimal

戻り値

Double。 すべての入力値が null の場合は Null です。

SELECT VALUE StDev(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
where product.ListPrice > @price

StDevP( expression )

すべての値の母集団の標準偏差を返します。

引数

Int32Int64DoubleDecimal

戻り値

Double。 すべての入力値が null の場合は Null です。

SELECT VALUE StDevP(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
where product.ListPrice > @price

Sum( expression )

NULL 以外の値の合計を返します。

引数

Int32Int64DoubleDecimal

戻り値

Double。 すべての入力値が null の場合は Null です。

SELECT VALUE Sum(p.ListPrice) FROM AdventureWorksEntities.Products as p 

Var( expression )

すべての null 以外の値の分散を返します。

引数

Int32Int64DoubleDecimal

戻り値

Double。 すべての入力値が null の場合は Null です。

SELECT VALUE Var(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

VarP( expression )

すべての null 以外の値の母集団の分散を返します。

引数

Int32Int64DoubleDecimal

戻り値

Double。 すべての入力値が null の場合は Null です。

SELECT VALUE VarP(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

Equivalent functionality is available in the Microsoft SQL Client Managed Provider. 詳細については、「Entity Framework 用 .NET Framework Data Provider for SQL Server (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 修飾子が指定された場合 (または修飾子が指定されなかった場合)、重複は除外されません。

参照

概念

正規関数 (Entity SQL)