カテゴリ:

集計関数 (一般)、 ウィンドウ関数 (一般、ウィンドウフレーム)

STDDEV_POP

NULL 以外の値の母標準偏差(分散の平方根)を返します。

標本標準偏差(分散の平方根)を返す STDDEV もご参照ください。

構文

集計関数

STDDEV_POP( [ DISTINCT ] <expr1>)
Copy

ウィンドウ関数

STDDEV_POP( [ DISTINCT ] <expr1> ) OVER (
                                        [ PARTITION BY <expr2> ]
                                        [ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
                                        )
Copy

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;
Copy
+----------------+
| STDDEV_POP(C1) |
|----------------|
|    3.265986375 |
+----------------+

関数 STDDEV と STDDEV_SAMP は、 STDDEV_POP と同じ結果を返さないことに注意してください。

以下の例では、カフェで販売されている食品をリストした menu という名前のテーブルがあるとします。以下の出力は、 Dessert カテゴリに属しているテーブルにある6行を表示します。 MainBeverage など、他のカテゴリの行も存在します。

+---------+--------------------+---------------+-------------------+----------------+
| 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;
Copy
+---------------+--------------+--------------+
| 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;
Copy
+---------------+-------------------+--------------+
| 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  |
...