STDDEV, STDDEV_SAMP¶
NULL 以外の値のサンプル標準偏差(サンプル分散の平方根)を返します。STDDEV と STDDEV_SAMP は、同じ関数のエイリアスです。
母標準偏差(分散の平方根)を返す、 STDDEV_POP もご参照ください。
構文¶
集計関数
{ STDDEV | STDDEV_SAMP } ( [ DISTINCT ] <expr1> )
ウィンドウ関数
{ STDDEV | STDDEV_SAMP } ( [ DISTINCT ] <expr1> ) OVER (
[ PARTITION BY <expr2> ]
[ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
)
window_frame
構文の詳細については、 ウィンドウフレームの構文と使用法 をご参照ください。
引数¶
expr1
数値に評価される式です。これは、標準偏差を計算する式です。
expr2
これは、パーティションを分割するオプションの式です。
expr3
これは、各パーティション内で並べ替えるオプションの式です。
戻り値¶
戻り値のデータ型はDOUBLEです。
グループ内のすべての記録が NULL の場合、関数は NULL を返します。
使用上の注意¶
単一記録入力の場合、 STDDEV と STDDEV_SAMP は両方とも NULL を返します。これは、単一の記録に対して STDDEV_SAMP が NULL を返し、 STDDEV が0を返すOracleの動作とは異なります。
VARCHAR 式が渡されると、この関数は入力を暗黙的に浮動小数点値にキャストします。キャストを実行できない場合、エラーが返されます。
この関数がウィンドウ関数として呼び出され、 OVER 句に ORDER BY 句が含まれる場合、
DISTINCT キーワードは禁止されており、 SQL コンパイルエラーになります。
ウィンドウフレームを指定する必要があります。ウィンドウフレームを指定しない場合は、暗黙の累積ウィンドウフレームが使用されます。
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
構文や例を含むウィンドウフレームの詳細については、 ウィンドウフレームの構文と使用法 をご参照ください。
暗黙的なウィンドウフレームの詳細については、 ウィンドウフレームの使用上の注意 をご参照ください。
集計関数の例¶
次の例は、整数の小さな標本の標準偏差を計算します。
CREATE TABLE t1 (c1 INTEGER); INSERT INTO t1 (c1) VALUES (6), (10), (14) ; SELECT STDDEV(c1) FROM t1;+----------+ | STDDEV() | |----------| | 4 | +----------+
関数 STDDEV_SAMP は同じ結果を返すことに注意してください。
SELECT STDDEV_SAMP(c1) FROM t1;+-----------------+ | STDDEV_SAMP(C1) | |-----------------| | 4 | +-----------------+
次の例では、フードトラックの販売商品をリストした、 menu_items
という名前の小さなテーブルを使用します。このテーブルを作成してロードする場合は、 menu_itemsテーブルを作成してロードする をご参照ください。
Dessert
行の売上原価(COGS)と販売価格の両方の標本標準偏差を見つけるには、次のクエリを実行します。
SELECT menu_category, STDDEV(menu_cogs_usd) stddev_cogs, STDDEV(menu_price_usd) stddev_price FROM menu_items WHERE menu_category='Dessert' GROUP BY 1;+---------------+-------------+--------------+ | MENU_CATEGORY | STDDEV_COGS | STDDEV_PRICE | |---------------+-------------+--------------| | Dessert | 1.00519484 | 1.471960144 | +---------------+-------------+--------------+
ウィンドウ関数の例¶
次の例も menu_items
テーブル(menu_itemsテーブルを作成してロードする を参照)を使用しますが、 STDDEV 関数をウィンドウ関数として呼び出します。
ウィンドウ関数は、 menu_category
列で行を分割します。したがって、標準偏差は各カテゴリについて1度計算され、その値はグループ内の各行の結果で繰り返されます。この例では、メニューカテゴリと売上原価の両方で行をグループ化する必要があります。
SELECT menu_category, menu_cogs_usd, STDDEV(menu_cogs_usd) OVER(PARTITION BY menu_category) stddev_cogs FROM menu_items GROUP BY 1,2 ORDER BY menu_category;
次の出力は、このクエリの部分的な結果セットです(最初の15行)。
+---------------+---------------+--------------+ | MENU_CATEGORY | MENU_COGS_USD | STDDEV_COGS | |---------------+---------------+--------------| | Beverage | 0.50 | 0.1258305738 | | Beverage | 0.65 | 0.1258305738 | | Beverage | 0.75 | 0.1258305738 | | Dessert | 1.25 | 1.054751155 | | Dessert | 3.00 | 1.054751155 | | Dessert | 1.00 | 1.054751155 | | Dessert | 2.50 | 1.054751155 | | Dessert | 0.50 | 1.054751155 | | Main | 4.50 | 3.444051572 | | Main | 2.40 | 3.444051572 | | Main | 1.50 | 3.444051572 | | Main | 11.00 | 3.444051572 | | Main | 8.00 | 3.444051572 | | Main | NULL | 3.444051572 | | Main | 12.00 | 3.444051572 | ...