Share via


集計正規関数

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

集計 Entity SQL 正規関数

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

Avg(expression)

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

引数

Int32Int64Double、および 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 以外の値の最大値を返します。

引数

ByteInt16Int32Int64ByteSingleDoubleDecimalDateTimeDateTimeOffsetTimeStringBinary

戻り値

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 以外の値の最小値を返します。

引数

ByteInt16Int32Int64ByteSingleDoubleDecimalDateTimeDateTimeOffsetTimeStringBinary

戻り値

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 以外の値の標準偏差を返します。

引数

Int32Int64DoubleDecimal

戻り値

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)

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

引数

Int32Int64DoubleDecimal

戻り値

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 以外の値の合計を返します。

引数

Int32Int64DoubleDecimal

戻り値

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 以外の値の分散を返します。

引数

Int32Int64DoubleDecimal

戻り値

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 以外の値の母集団の分散を返します。

引数

Int32Int64DoubleDecimal

戻り値

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 修飾子が指定された場合 (または修飾子が指定されなかった場合)、重複は除外されません。

関連項目