- Kategorien:
Aggregatfunktionen (Allgemein), Fensterfunktionen (Allgemein, Fensterrahmen)
VAR_SAMP¶
Gibt die Stichprobenvarianz von Nicht-NULL-Datensätzen in einer Gruppe zurück. Wenn alle Datensätze in einer Gruppe NULL sind, wird NULL zurückgegeben.
- Aliasse:
Syntax¶
Aggregatfunktion
VAR_SAMP( [DISTINCT] <expr1> )
Fensterfunktionen
VAR_SAMP( <expr1> ) OVER (
[ PARTITION BY <expr2> ]
[ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
)
Weitere Informationen zur Syntax von Fensterrahmen
finden Sie unter Fensterrahmensyntax und Verwendung.
Argumente¶
Ausdruck1
Der Ausdruck
Ausdruck1
sollte einen numerischen Datentyp ergeben.Ausdruck2
Dies ist der Ausdruck, nach dem partitioniert werden soll.
Ausdruck3
Dies ist der Ausdruck, nach dem in jeder Partition sortiert werden soll.
Rückgabewerte¶
Der Datentyp des zurückgegebenen Werts ist NUMBER(<precision>, <scale>)
. Die Skalierung hängt von den verarbeiteten Werten ab.
Nutzungshinweise¶
Bei Eingaben mit einem Datensatz geben VAR_SAMP, VARIANCE und VARIANCE_SAMP alle NULL zurück. Dies unterscheidet sich vom Oracle-Verhalten: VAR_SAMP gibt für einen einzelnen Datensatz NULL und VARIANCE gibt 0 zurück.
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.
Beim Aufruf als Fensterfunktion:
Das Schlüsselwort DISTINCT ist syntaktisch zulässig, wird jedoch ignoriert.
Wenn in der OVER-Klausel eine ORDER BY-Unterklausel verwendet wird, muss ein Fensterrahmen verwendet werden. Wenn kein Fensterrahmen angegeben ist, impliziert das ORDER BY einen kumulativen Fensterrahmen:
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
Weitere Informationen zu Fensterrahmen, einschließlich Syntax und Beispielen, finden Sie unter Fensterrahmensyntax und Verwendung.
Weitere Informationen zu impliziten Fensterrahmen finden Sie unter Hinweise zur Nutzung von Fensterrahmen.
Beispiele¶
In diesem Beispiel wird die Verwendung der Funktion VAR_SAMP
veranschaulicht:
Erstellen Sie eine Tabelle, und füllen Sie diese:
create table aggr(k int, v decimal(10,2), v2 decimal(10, 2)); insert into aggr values (1, 10, null), (2, 10, 11), (2, 20, 22), (2, 25, null), (2, 30, 35);Fragen Sie die Tabelle ab, indem Sie VAR_SAMP() aufrufen:
SELECT k, var_samp(v), var_samp(v2) FROM aggr GROUP BY k; +---+---------------+----------------+ | K | VAR_SAMP(V) | VAR_SAMP(V2) | |---+---------------+----------------| | 1 | NULL | NULL | | 2 | 72.9166666667 | 144.3333333333 | +---+---------------+----------------+