Kategorien:

Aggregatfunktionen (Allgemein), Syntax und Verwendung von Fensterfunktionen (Allgemein)

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:

VARIANCE , VARIANCE_SAMP

Syntax

Aggregatfunktion

VAR_SAMP( [DISTINCT] <expr1> )
Copy

Fensterfunktionen

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

Die detaillierte Syntax von window_frame finden Sie unter Syntax und Verwendung von Fensterfunktionen.

Argumente

expr1

Der Ausdruck expr1 sollte einen numerischen Datentyp ergeben.

expr2

Dies ist der Ausdruck, nach dem partitioniert werden soll.

expr3

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

Rückgabewerte

Der Datentyp des zurückgegebenen Werts ist NUMBER(<Genauigkeit>, <Skalierung>). 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.

  • Wenn diese Funktion als Fensterfunktion aufgerufen wird:

    • Die Syntax erlaubt das Schlüsselwort DISTINCT, aber es wird ignoriert.

    • Wenn Sie keinen Fensterrahmen angeben, wird der folgende implizite Fensterrahmen verwendet:

      RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

      Weitere Informationen über Fensterrahmen, einschließlich Syntax, Nutzungshinweise und Beispiele, finden Sie unter Syntax und Verwendung von Fensterfunktionen.

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);
Copy

Abfragen der Tabelle:

SELECT k, var_samp(v), var_samp(v2) 
    FROM aggr 
    GROUP BY k
    ORDER BY k;
+---+---------------+----------------+
| K |   VAR_SAMP(V) |   VAR_SAMP(V2) |
|---+---------------+----------------|
| 1 |          NULL |           NULL |
| 2 | 72.9166666667 | 144.3333333333 |
+---+---------------+----------------+
Copy