SQL Anywhere unterstützt zwei Versionen von Funktionen für Varianz und Standardabweichung: eine Version für Stichproben und eine Version für Normalverteilungen. Die Auswahl einer Version hängt von dem statistischen Zusammenhang ab, in der die Funktion benutzt wird.
Alle Funktionen für Varianz und Standardabweichung sind echte Aggregatfunktionen, da sie Werte für eine Zeilenpartition berechnen können, die durch die GROUP BY-Klausel der Abfrage erstellt wurde. Ebenso wie andere Aggregatfunktionen, etwa MAX oder MIN, ignorieren auch diese Funktionen NULL in der Eingabe.
Um die Performance zu verbessern, berechnet SQL Anywhere den Mittelwert und die Abweichung vom Mittelwert in einem Schritt. Daher ist nur ein Datendurchlauf erforderlich.
Außerdem werden unabhängig vom Datentyp des zu analysierenden Ausdrucks alle Berechnungen für Varianz und Standardabweichung im IEEE-Format einer Gleitkommazahl mit doppelter Genauigkeit durchgeführt. Falls die Eingabe einer Funktion für Varianz oder Standardabweichung leer ist, liefert die Funktion NULL als Ergebnis. Wenn VAR_SAMP für eine einzelne Zeile berechnet wird, ist das Ergebnis NULL, während es bei VAR_POP der Wert 0 ist.
SQL Anywhere bietet folgende Funktionen für Standardabweichung und Varianz:
Informationen über die mathematischen Formeln, die diesen Funktionen zugrunde liegen, finden Sie unter Mathematische Formeln für die Aggregatfunktionen.
Diese Funktion ist ein Alias für die Funktion STDDEV_SAMP. Siehe STDDEV_SAMP-Funktion [Aggregat].
Diese Funktion berechnet die Standardabweichung für eine Normalverteilung, die aus einem nummerischen Ausdruck besteht, als DOUBLE.
Die nachstehende Abfrage ergibt eine Ergebnismenge, die die Mitarbeiter zeigt, deren Gehalt um eine Standardabweichung über dem Durchschnittsgehalt ihrer Abteilung liegt. Die Standardabweichung ist ein Messwert für die Abweichung der Daten vom Mittelwert.
SELECT * FROM ( SELECT Surname AS Employee, DepartmentID AS Department, CAST( Salary as DECIMAL( 10, 2 ) ) AS Salary, CAST( AVG( Salary ) OVER ( PARTITION BY DepartmentID ) AS DECIMAL ( 10, 2 ) ) AS Average, CAST( STDDEV_POP( Salary ) OVER ( PARTITION BY DepartmentID ) AS DECIMAL ( 10, 2 ) ) AS StandardDeviation FROM Employees GROUP BY Department, Employee, Salary ) AS DerivedTable WHERE Salary > Average + StandardDeviation ORDER BY Department, Salary, Employee; |
Die nachstehende Tabelle stellt die Ergebnismenge dieser Abfrage dar. Jede Abteilung hat mindestens einen Mitarbeiter, dessen Gehalt deutlich vom Mittelwert abweicht.
Employee | Department | Salary | Average | StandardDeviation | |
---|---|---|---|---|---|
1 | Lull | 100 | 87900.00 | 58736.28 | 16829.60 |
2 | Scheffield | 100 | 87900.00 | 58736.28 | 16829.60 |
3 | Scott | 100 | 96300.00 | 58736.28 | 16829.60 |
4 | Sterling | 200 | 64900.00 | 48390.95 | 13869.60 |
5 | Savarino | 200 | 72300.00 | 48390.95 | 13869.60 |
6 | Kelly | 200 | 87500.00 | 48390.95 | 13869.60 |
7 | Shea | 300 | 138948.00 | 59500.00 | 30752.40 |
8 | Blaikie | 400 | 54900.00 | 43640.67 | 11194.02 |
9 | Morris | 400 | 61300.00 | 43640.67 | 11194.02 |
10 | Evans | 400 | 68940.00 | 43640.67 | 11194.02 |
11 | Martinez | 500 | 55500.00 | 33752.20 | 9084.50 |
Der Mitarbeiter Scott verdient $96,300.00, der Abteilungsdurchschnitt ist hingegen $58,736.28. Die Standardabweichung für
diese Abteilung ist 16,829.00. Dies bedeutet, dass Gehälter unter $75,565.88 (58736.28 + 16829.60 = 75565.88
) innerhalb einer Standardabweichung des Mittelwerts liegen. Bei $96,300.00 ist der Mitarbeiter Scott deutlich über diesem
Wert.
In diesem Beispiel wird davon ausgegangen, dass "Surname" und "Salary" für alle Mitarbeiter unterschiedlich sind, was aber nicht notwendigerweise der Fall ist. Um Eindeutigkeit zu gewährleisten, könnten Sie der GROUP BY-Klausel das Merkmal "EmployeeID" hinzufügen.
Die folgende Anweisung listet den Durchschnitt und die Varianz in der Anzahl der Elemente pro Auftrag in verschiedenen Zeitabschnitten auf:
SELECT YEAR( ShipDate ) AS Year, QUARTER( ShipDate ) AS Quarter, AVG( Quantity ) AS Average, STDDEV_POP( Quantity ) AS Variance FROM SalesOrderItems GROUP BY Year, Quarter ORDER BY Year, Quarter; |
Diese Abfrage liefert das folgende Ergebnis:
Year | Quarter | Average | Variance |
---|---|---|---|
2000 | 1 | 25.775148 | 14.2794... |
2000 | 2 | 27.050847 | 15.0270... |
... | ... | ... | ... |
Weitere Hinweise zur Syntax dieser Funktion finden Sie unter STDDEV_SAMP-Funktion [Aggregat].
Diese Funktion berechnet die Standardabweichung für eine Stichprobe, die aus einem nummerischen Ausdruck besteht, als DOUBLE. Die folgende Anweisung liefert beispielsweise den Durchschnitt und die Varianz in der Anzahl der Elemente pro Auftrag in verschiedenen Quartalen:
SELECT YEAR( ShipDate ) AS Year, QUARTER( ShipDate ) AS Quarter, AVG( Quantity ) AS Average, STDDEV_SAMP( Quantity ) AS Variance FROM SalesOrderItems GROUP BY Year, Quarter ORDER BY Year, Quarter; |
Diese Abfrage liefert das folgende Ergebnis:
Year | Quarter | Average | Variance |
---|---|---|---|
2000 | 1 | 25.775148 | 14.3218... |
2000 | 2 | 27.050847 | 15.0696... |
... | ... | ... | ... |
Weitere Hinweise zur Syntax dieser Funktion finden Sie unter STDDEV_POP-Funktion [Aggregat].
Diese Funktion ist ein Alias der VAR_SAMP-Funktion. Siehe VAR_SAMP-Funktion [Aggregat].
Diese Funktion berechnet die statistische Varianz einer Normalverteilung, die aus einem nummerischen Ausdruck besteht, als DOUBLE. Die folgende Anweisung listet beispielsweise den Durchschnitt und die Varianz in der Anzahl der Elemente pro Auftrag in verschiedenen Zeitabschnitten auf:
SELECT YEAR( ShipDate ) AS Year, QUARTER( ShipDate ) AS Quarter, AVG( Quantity ) AS Average, VAR_POP( quantity ) AS Variance FROM SalesOrderItems GROUP BY Year, Quarter ORDER BY Year, Quarter; |
Diese Abfrage liefert das folgende Ergebnis:
Year | Quarter | Average | Variance |
---|---|---|---|
2000 | 1 | 25.775148 | 203.9021... |
2000 | 2 | 27.050847 | 225.8109... |
... | ... | ... | ... |
Falls VAR_POP für eine einzelne Zeile berechnet wird, lautet das Ergebnis der Wert 0.
Weitere Hinweise zur Syntax dieser Funktion finden Sie unter VAR_POP-Funktion [Aggregat].
Diese Funktion berechnet die statistische Varianz einer Stichprobe, die aus einem nummerischen Ausdruck besteht, als DOUBLE.
Die folgende Anweisung listet beispielsweise den Durchschnitt und die Varianz in der Anzahl der Elemente pro Auftrag in verschiedenen Zeitabschnitten auf:
SELECT YEAR( ShipDate ) AS Year, QUARTER( ShipDate ) AS Quarter, AVG( Quantity ) AS Average, VAR_SAMP( Quantity ) AS Variance FROM SalesOrderItems GROUP BY Year, Quarter ORDER BY Year, Quarter; |
Diese Abfrage liefert das folgende Ergebnis:
Year | Quarter | Average | Variance |
---|---|---|---|
2000 | 1 | 25.775148 | 205.1158... |
2000 | 2 | 27.050847 | 227.0939... |
... | ... | ... | ... |
Falls VAR_SAMP für eine einzelne Zeile berechnet wird, lautet das Ergebnis NULL.
Weitere Hinweise zur Syntax dieser Funktion finden Sie unter VAR_SAMP-Funktion [Aggregat].
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |