STDDEV_POP¶
NULL 以外の値の母標準偏差(分散の平方根)を返します。
標本標準偏差(分散の平方根)を返す STDDEV もご参照ください。
構文¶
集計関数
STDDEV_POP( [ DISTINCT ] <expr1>)
ウィンドウ関数
STDDEV_POP( [ DISTINCT ] <expr1> ) OVER (
[ PARTITION BY <expr2> ]
[ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
)
window_frame
構文の詳細については、 ウィンドウフレームの構文と使用法 をご参照ください。
引数¶
expr1
数値に評価される式です。これは、標準偏差を計算する式です。
expr2
これは、パーティションを分割するオプションの式です。
expr3
これは、各パーティション内で並べ替えるオプションの式です。
戻り値¶
戻り値のデータ型はDOUBLEです。
グループ内のすべての記録が NULL の場合、関数は NULL を返します。
使用上の注意¶
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_POP(c1) FROM t1;+----------------+ | STDDEV_POP(C1) | |----------------| | 3.265986375 | +----------------+
関数 STDDEV と STDDEV_SAMP は、 STDDEV_POP と同じ結果を返さないことに注意してください。
以下の例では、カフェで販売されている食品をリストした menu
という名前のテーブルがあるとします。以下の出力は、 Dessert
カテゴリに属しているテーブルにある6行を表示します。 Main
や Beverage
など、他のカテゴリの行も存在します。
+---------+--------------------+---------------+-------------------+----------------+ | MENU_ID | MENU_ITEM_NAME | ITEM_CATEGORY | COST_OF_GOODS_USD | SALE_PRICE_USD | |---------+--------------------+---------------+-------------------+----------------| | 10002 | Sugar Cone | Dessert | 2.5000 | 6.0000 | | 10003 | Waffle Cone | Dessert | 2.5000 | 6.0000 | | 10004 | Two Scoop Bowl | Dessert | 3.0000 | 7.0000 | | 10008 | Ice Cream Sandwich | Dessert | 1.0000 | 4.0000 | | 10009 | Mango Sticky Rice | Dessert | 1.2500 | 5.0000 | | 10010 | Popsicle | Dessert | 0.5000 | 3.0000 | +---------+--------------------+---------------+-------------------+----------------+
売上原価と販売価格(Dessert
行のみ)の母標準偏差を求めるには、以下のクエリを実行します。
SELECT item_category, STDDEV_POP(cost_of_goods_usd) stddev_cogs, STDDEV_POP(sale_price_usd) stddev_price FROM menu WHERE item_category='Dessert' GROUP BY 1;+---------------+--------------+--------------+ | ITEM_CATEGORY | STDDEV_COGS | STDDEV_PRICE | |---------------+--------------+--------------| | Dessert | 0.9176131477 | 1.343709625 | +---------------+--------------+--------------+
ウィンドウ関数の例¶
次の例では、同じ menu
テーブルを使用しますが、 STDDEV_POP 関数をウィンドウ関数として実行します。
ウィンドウ関数は、 item_category
列で行を分割します。したがって、標準偏差は各項目カテゴリについて1度計算され、その値はグループ内の各行の結果で繰り返されます。この例では、項目カテゴリと売上原価の両方で行をグループ化する必要があります。(Dessert
6行が5行にグループ化されていることに注意してください。これは、2つの行に同じ原価があるためです。)
SELECT item_category, cost_of_goods_usd, STDDEV_POP(cost_of_goods_usd) OVER(PARTITION BY item_category) stddev_cogs FROM menu GROUP BY 1,2 ORDER BY item_category;+---------------+-------------------+--------------+ | ITEM_CATEGORY | COST_OF_GOODS_USD | STDDEV_COGS | |---------------+-------------------+--------------| | Beverage | 0.5000 | 0.1027402334 | | Beverage | 0.7500 | 0.1027402334 | | Beverage | 0.6500 | 0.1027402334 | | Dessert | 2.5000 | 0.9433981132 | | Dessert | 3.0000 | 0.9433981132 | | Dessert | 1.0000 | 0.9433981132 | | Dessert | 0.5000 | 0.9433981132 | | Dessert | 1.2500 | 0.9433981132 | | Main | 4.5000 | 3.352193642 | | Main | 8.0000 | 3.352193642 | | Main | 2.0000 | 3.352193642 | | Main | 3.5000 | 3.352193642 | ...