STDDEV_POP
NULL 以外の値の母標準偏差(分散の平方根)を返します。
標本標準偏差(分散の平方根)を返す STDDEV もご参照ください。
構文
集計関数
STDDEV_POP( [ DISTINCT ] <expr1>)
ウィンドウ関数
STDDEV_POP( [ DISTINCT ] <expr1> ) OVER (
[ PARTITION BY <expr2> ]
[ ORDER BY <expr3> [ { ASC | DESC } ] [ NULLS { FIRST | LAST } ] [ <window_frame> ] ]
)
window_frame の構文の詳細については、 ウィンドウ関数の構文と使用法 をご参照ください。
引数
expr1数値に評価される式です。これは、標準偏差を計算する式です。
expr2これは、パーティションを分割するオプションの式です。
expr3これは、各パーティション内で並べ替えるオプションの式です。
戻り値
戻り値のデータ型はDOUBLEです。
グループ内のすべての記録が NULL の場合、関数は NULL を返します。
集計関数の例
次の例は、整数の小さな母集団の標準偏差を計算します。
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 |
...