STDEV (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

指定された式のすべての値の統計的標準偏差を返します。

Transact-SQL 構文表記規則

構文

-- Aggregate Function Syntax   
STDEV ( [ ALL | DISTINCT ] expression )  
  
-- Analytic Function Syntax   
STDEV ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

ALL
すべての値にこの関数を適用します。 ALL が既定値です。

DISTINCT
重複する値は 1 つだけカウントします。

式 (expression)
数値を指定します。 集計関数とサブクエリは使用できません。 expression は、bit データ型を除く、真数データ型または概数データ型の式です。

OVER ( [ partition_by_clause ] order_by_clause)
partition_by_clause は、FROM 句で生成された結果セットをパーティションに分割します。このパーティションに関数が適用されます。 指定しない場合、関数ではクエリ結果セットのすべての行を 1 つのグループとして扱います。 order_by_clause 操作が実行される論理的順序を決定します。 order_by_clause は必須です。 詳細については、OVER 句 (Transact-SQL) に関する記事を参照してください。

戻り値の型

float

注釈

SELECT ステートメントのすべてのアイテムに STDEV を適用すると、結果セット内のそれぞれの値が計算に含められます。 STDEV は、数値型列に対して使用できます。 NULL 値は無視されます。

STDEV は、OVER 句や ORDER BY 句なしで使用される場合は決定的関数です。 OVER 句や ORDER BY 句と共に使用される場合は、非決定的関数です。 詳細については、「 決定的関数と非決定的関数」を参照してください。

A: STDEV を使用する

次の例では、AdventureWorks2022 データベースの SalesPerson テーブルにあるすべてのボーナス値の標準偏差が返されます。

SELECT STDEV(Bonus)  
FROM Sales.SalesPerson;  
GO  

例: Azure Synapse Analytics、Analytics Platform System (PDW)

B: STDEV を使用する

次の例は、テーブル dbo.FactSalesQuota の販売ノルマの値の標準偏差を返します。 最初の列にはすべての個別値の標準偏差が含まれ、2 番目の列には重複値を含むすべての値の標準偏差が含まれます。

-- Uses AdventureWorks  
  
SELECT STDEV(DISTINCT SalesAmountQuota)AS Distinct_Values, STDEV(SalesAmountQuota) AS All_Values  
FROM dbo.FactSalesQuota;  

結果セットは次のようになります。

Distinct_Values   All_Values
----------------  ----------------
398974.27         398450.57

C. OVER で STDEV を使用する

次の例は、暦年の各四半期に対する販売ノルマの値の標準偏差を返します。 OVER 句の ORDER BY は STDEV を並べ替え、SELECT ステートメントの ORDER BY は結果セットを並べ替えることに注意してください。

-- Uses AdventureWorks  
  
SELECT CalendarYear AS Year, CalendarQuarter AS Quarter, SalesAmountQuota AS SalesQuota,  
       STDEV(SalesAmountQuota) OVER (ORDER BY CalendarYear, CalendarQuarter) AS StdDeviation  
FROM dbo.FactSalesQuota  
WHERE EmployeeKey = 272 AND CalendarYear = 2002  
ORDER BY CalendarQuarter;  

結果セットは次のようになります。

Year  Quarter  SalesQuota              StdDeviation
----  -------  ----------------------  -------------------
2002  1         91000.0000             null
2002  2        140000.0000             34648.23
2002  3         70000.0000             35921.21
2002  4        154000.0000             39752.36

参照

集計関数 (Transact-SQL)
OVER 句 (Transact-SQL)