Kategorien:

Aggregationsfunktionen (Allgemein), Fensterfunktionen (Allgemein, Fensterrahmen)

STDDEV_POP

Gibt die Populationsstandardabweichung (Quadratwurzel der Varianz) von Nicht-NULL-Werten zurück.

Siehe auch STDDEV, die die Stichproben-Standardabweichung (Quadratwurzel der Varianz) zurückgibt.

Syntax

Aggregationsfunktion

STDDEV_POP( [ DISTINCT ] <expr1>)
Copy

Fensterfunktionen

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

Weitere Informationen zur Syntax von window_frame finden Sie unter Syntax und Nutzung von Fensterrahmen.

Argumente

expr1

Ein Ausdruck, der einen numerischen Wert ergibt. Dies ist der Ausdruck, anhand dessen die Standardabweichung berechnet wird.

expr2

Dies ist der optionale Ausdruck, nach dem partitioniert werden soll.

expr3

Dies ist der optionale Ausdruck, nach dem in jeder Partition sortiert werden soll.

Rückgabewerte

Der Datentyp des zurückgegebenen Werts ist DOUBLE.

Wenn alle Datensätze in einer Gruppe NULL sind, gibt die Funktion NULL zurück.

Nutzungshinweise

  • Wenn ein VARCHAR-Ausdruck übergeben wird, wandelt diese Funktion die Eingabe implizit in Gleitkommawerte um. Wenn die Umwandlung nicht ausgeführt werden kann, wird ein Fehler zurückgegeben.

  • Wenn diese Funktion als Fensterfunktion aufgerufen wird und die OVER-Klausel eine ORDER BY-Klausel enthält:

    • Das Schlüsselwort DISTINCT ist nicht zulässig und führt zu einem SQL-Kompilierungsfehler.

    • Es muss ein Fensterrahmen angegeben werden. Wenn Sie keinen Fensterrahmen angeben, wird ein impliziter kumulativer Fensterrahmen verwendet:

      RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

    Weitere Informationen zu Fensterrahmen, einschließlich Syntax und Beispiele, finden Sie unter Syntax und Nutzung von Fensterrahmen.

    Weitere Informationen zu impliziten Fensterrahmen finden Sie unter Hinweise zur Nutzung von Fensterrahmen.

Beispiele für Aggregationsfunktionen

Im folgenden Beispiel wird die Standardabweichung für eine kleine Grundgesamtheit von Ganzzahlen berechnet:

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 |
+----------------+

Beachten Sie, dass die Funktionen STDDEV und STDDEV_SAMP nicht das gleiche Ergebnis liefern wie STDDEV_POP.

Das folgende Beispiel geht davon aus, dass Sie eine Tabelle mit dem Namen menu haben, in der Lebensmittel aufgelistet sind, die in einem Café verkauft werden. Die folgende Ausgabe zeigt die 6 Zeilen der Tabelle, die zur Kategorie Dessert gehören. Weitere Zeilen gibt es auch für andere Kategorien, z. B. Main und 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 |
+---------+--------------------+---------------+-------------------+----------------+

Um die Standardabweichung der Grundgesamtheit für die Kosten der verkauften Waren (Selbstkosten) und den Verkaufspreis (nur für die Dessert-Zeilen) zu finden, führen Sie folgende Abfrage aus:

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 |
+---------------+--------------+--------------+

Beispiel für eine Fensterfunktion

Im folgenden Beispiel wird die gleiche Tabelle menu verwendet, aber die Funktion STDDEV_POP wird als Fensterfunktion ausgeführt.

Die Fensterfunktion partitioniert die Zeilen nach der Spalte item_category. Daher wird die Standardabweichung für jede Positionskategorie einmal berechnet, und dieser Wert wird im Ergebnis für jede Zeile der Gruppe wiederholt. In diesem Beispiel müssen die Zeilen sowohl nach dem Positionstyp als auch nach den Selbstkosten gruppiert werden. (Beachten Sie, dass die 6 Dessert-Zeilen nun zu 5 Zeilen zusammengefasst sind, da zwei Zeilen denselben Warenwert haben).

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  |
...