SUM Aggregatfunktionen

Die SUM-Funktion gibt die Summe einer Reihe von Zahlen zurück.

Syntaxdiagramm lesenÜberspringe das visuelle SyntaxdiagrammSUM(ALLDISTINCTnumerischer Ausdruck)

Das Schema ist SYSIBM.

Die Argumentwerte können von jedem integrierten numerischen Datentyp sein, und ihre Summe muss innerhalb des Bereichs des Datentyps des Ergebnisses liegen.

Die Argumente können auch ein Datentyp mit Zeichenfolge oder Grafikfolge sein. Die Zeichenketteneingabe wird implizit in einen numerischen Wert von DECFLOAT(34) umgewandelt.

Der Datentyp des Ergebnisses wird wie folgt bestimmt:

  • DECFLOAT(34), wenn das Argument DECFLOAT(n) ist.
  • Große Ganzzahl, wenn das Argument eine kleine Ganzzahl ist.
  • Gleitkommazahl mit doppelter Genauigkeit, wenn das Argument eine Gleitkommazahl mit einfacher Genauigkeit ist.
  • Andernfalls ist das Ergebnis dasselbe wie der Datentyp des Arguments.

Das Ergebnis kann Null sein.

Wenn der Datentyp der Argumentwerte dezimal ist, entspricht die Skalierung des Ergebnisses der Skalierung der Argumentwerte, und die Genauigkeit des Ergebnisses hängt von der Genauigkeit der Argumentwerte und der Option für die Dezimalgenauigkeit ab:

  • Wenn die Genauigkeit der Argumentwerte größer als 15 ist oder die Option DEC31 aktiv ist, ist die Genauigkeit des Ergebnisses min(31,P+10), wobei P die Genauigkeit der Argumentwerte ist.
  • Andernfalls beträgt die Genauigkeit des Ergebnisses 15.

Die Funktion wird auf die Wertegruppe angewendet, die durch den Ausschluss von Nullwerten aus den Argumentwerten abgeleitet wurde. Wenn DISTINCT angegeben ist, werden auch redundante doppelte Werte eliminiert.

Wenn die Funktion auf eine leere Menge angewendet wird, ist das Ergebnis der Nullwert. Andernfalls ist das Ergebnis die Summe der Werte in der Menge. Die Reihenfolge, in der die Summierung durchgeführt wird, ist nicht festgelegt, aber jedes Zwischenergebnis muss innerhalb des Bereichs des Ergebnisdatentyps liegen.

Beispiel : Setzen Sie die große Ganzzahl-Hostvariable EINKOMMEN auf das Gesamteinkommen aus allen Quellen (Gehälter, Provisionen und Boni) der in der Beispieltabelle DSN8C10.EMP dargestellten Mitarbeiter. Wenn DEC31 nicht in Kraft ist, ist die resultierende Summe DECIMAL(15,2), da alle drei Spalten DECIMAL(9,2) sind.
   EXEC SQL SELECT SUM(SALARY+COMM+BONUS)
     INTO :INCOME
     FROM DSN8C10.EMP;