Dauer (Pacific Normalzeit):
To (Pacific Normalzeit):
Auswirkungen:
  • None
Benutzeraktion:
  • None
Microsoft Visual FoxPro-Sprachreferenz

CALCULATE-Befehl

Führt finanzmathematische und statistische Operationen mit Feldern einer Tabelle oder mit Ausdrücken, die Felder verwenden, aus.

CALCULATE eExpressionList [Scope] [FOR lExpression1] [WHILE lExpression2]
   [TO VarList | TO ARRAY ArrayName] [NOOPTIMIZE] 
   [IN nWorkArea | cTableAlias]

Parameter

eExpressionList
Gibt die Ausdrücke an, die eine beliebige Kombination der folgenden Funktionen enthalten können:

AVG(nExpression)

CNT( )

MAX(eExpression)

MIN(eExpression)

NPV(nExpression1, nExpression2 [, nExpression3])

STD(nExpression)

SUM(nExpression)

VAR(nExpression)

Funktionen in der Ausdrucksliste eExpressionList werden durch Kommas getrennt. Diese Funktionen sind für CALCULATE spezifisch und werden später in diesem Abschnitt ausführlicher erläutert. Sie dürfen nicht mit den unabhängigen Funktionen ähnlichen Namens verwechselt werden, so ist CALCULATE MIN( ) beispielsweise nicht mit MIN( ) identisch.

Scope
Gibt den Bereich von Datensätzen an, der in der Berechnung verwendet wird. Nur die Datensätze innerhalb dieses Bereichs werden in der Berechnung berücksichtigt. Die Bereichsklauseln sind: ALL, NEXT nRecords, RECORD nRecordNumber und REST. Weitere Informationen zu Bereichsklauseln finden Sie unter Bereichsklauseln. Befehle, bei denen ein Geltungsbereich (Scope) angegeben ist, funktionieren nur für die Tabelle des aktiven Arbeitsbereichs.

Der Standardbereich für CALCULATE ist ALL, also alle Datensätze.

FOR lExpression1
Gibt an, dass nur die Datensätze in der Berechnung berücksichtigt werden, die die logische Bedingung lExpression1 erfüllen. Mit Hilfe einer FOR-Klausel können Sie Datensätze bedingt in die Berechnung aufnehmen und so die nicht gewünschten Datensätze herausfiltern.

Eine CALCULATE ... FOR-Abfrage wird mit der Rushmore-Technologie optimiert, wenn lExpression1 ein optimierbarer Ausdruck ist. Die beste Leistung erreichen Sie also, indem Sie in der FOR-Klausel einen optimierbaren Ausdruck verwenden. Weitere Informationen zu mit Hilfe von Rushmore optimierbaren Ausdrücken finden Sie unter SET OPTIMIZE und Verwenden von Rushmore zum Beschleunigen des Datenzugriffs.

WHILE lExpression2
Datensätze werden in die Berechnung aufgenommen, solange die Auswertung des logischen Ausdrucks lExpression2 Wahr (.T.) ergibt.
TO VarList
Gibt eine oder mehrere Speichervariablen an, in der bzw. denen die Ergebnisse der Berechnung gespeichert werden. Bei Angabe einer noch nicht vorhandenen Variable, erstellt Visual FoxPro automatisch eine Variable mit dem angegebenen Namen.
TO ARRAY ArrayName
Gibt den Namen des Arrays an, in dem die Ergebnisse der Berechnung gespeichert werden können. Bei Angabe eines noch nicht vorhandenen Arraynamens, erstellt Visual FoxPro automatisch ein Array mit diesem Namen. Ist das Array zwar vorhanden, aber zu klein, um alle Ergebnisse der Berechnung aufzunehmen, vergrößert Visual FoxPro das Array automatisch, so dass alle Informationen gespeichert werden können. Ist ein vorhandenes Array größer als erforderlich, bleiben die überzähligen Elemente unverändert. Die Ergebnisse werden in der Reihenfolge in die Arrayelemente geschrieben, in der sie im CALCULATE-Befehl angegeben sind.
NOOPTIMIZE
Deaktiviert die Rushmore-Optimierung von CALCULATE. Weitere Informationen finden Sie unter SET OPTIMIZE und Verwenden von Rushmore zum Beschleunigen des Datenzugriffs.
AVG(nExpression)
Berechnet das arithmetische Mittel von nExpression. Nur Datensätze, die in den angegebenen Bereich (Scope) fallen und/oder die optionalen FOR- oder WHILE-Bedingungen erfüllen, werden bei der Berechnung berücksichtigt.
CNT( )
Gibt die Anzahl der Datensätze in der Tabelle zurück. Nur Datensätze, die in den angegebenen Bereich (Scope) fallen und/oder die optionalen FOR- oder WHILE-Bedingungen erfüllen, werden bei der Berechnung berücksichtigt.
MAX(eExpression)
Gibt den höchsten oder neuesten Wert von eExpression zurück. In der MAX( )-Klausel können Sie ein beliebiges Feld vom Typ Zeichen, Datum, DatumZeit, Numerisch, Gleitkomma, Integer, Double oder Währung oder einen beliebigen Ausdruck angeben, der Felder dieser Datentypen verwendet. Nur Datensätze, die in den angegebenen Bereich (Scope) fallen und/oder die optionalen FOR- oder WHILE-Bedingungen erfüllen, werden bei der Berechnung berücksichtigt.
MIN(eExpression)
Gibt den niedrigsten oder ersten Wert von eExpression zurück. Sie können in eExpression jedes beliebige Feld vom Typ Zeichen, Datum, DatumZeit, Numerisch, Gleitkomma, Integer, Double oder Währung oder einen beliebigen zulässigen Ausdruck angeben, der Felder dieser Datentypen verwendet. Nur Datensätze, die in den angegebenen Bereich (Scope) fallen und/oder die optionalen FOR- oder WHILE-Bedingungen erfüllen, werden bei der Berechnung berücksichtigt.
NPV(nExpression1, nExpression2 [, nExpression3])
Berechnet den Nettobarwert einer Reihe von zukünftigen Zahlungen, die mit einem konstanten periodischen Zinssatz verzinst werden.

nExpression1 gibt den Zinssatz als Dezimalwert an.

nExpression2 gibt ein Feld, einen Feldausdruck oder einen numerischen Ausdruck an, das bzw. der eine Reihe von Zahlungen darstellt. Jede Zahlung kann positiv oder negativ sein. Ist nExpression2 ein Feld, wird der Wert des Feldes in allen Datensätzen als Zahlung betrachtet.

nExpression3 gibt eine optionale Anfangsinvestition an. Wird keine Anfangsinvestition angegeben, wird davon ausgegangen, dass diese am Ende der ersten Periode erfolgt. Sie ist der erste Datensatz im Feld; ihr Wert ist negativ, wenn es sich um einen Cash-Outflow handelt.

Nur Datensätze, die in den angegebenen Bereich (Scope) fallen und/oder die optionalen FOR- oder WHILE-Bedingungen erfüllen, werden bei der Berechnung berücksichtigt.

STD(nExpression)
Berechnet die Standardabweichung von nExpression. Die Standardabweichung gibt an, wie weit die Werte von Feldern oder von Ausdrücken, die Felder verwenden, vom Mittelwert aller Werte abweichen. Je kleiner diese ist, desto weniger weichen die Werte vom Mittelwert ab. Nur Datensätze, die in den angegebenen Bereich (Scope) fallen und/oder die optionalen FOR- oder WHILE-Bedingungen erfüllen, werden bei der Berechnung berücksichtigt.
SUM(nExpression)
Bildet die Summe aller Werte in nExpression. Nur Datensätze, die in den angegebenen Bereich (Scope) fallen und/oder die optionalen FOR- oder WHILE-Bedingungen erfüllen, werden bei der Berechnung berücksichtigt.
VAR(nExpression)
Berechnet die Varianz vom Mittelwert von nExpression. Die Varianz ist das Quadrat der Standardabweichung. Je kleiner die Varianz ist, desto weniger weichen die Werte vom Mittelwert ab. Nur Datensätze, die in den angegebenen Bereich (Scope) fallen und/oder die optionalen FOR- oder WHILE-Bedingungen erfüllen, werden bei der Berechnung berücksichtigt.
IN nWorkArea cTableAlias
Gibt den Arbeitsbereich oder Tabellenalias an, auf den sich der CALCULATE-Befehl auswirkt. Verwenden Sie diese Klausel zur Angabe eines Arbeitsbereichs oder einer Tabelle außerhalb des aktuellen Arbeitsbereichs.

Hinweise

Datensätze, die einen NULL-Wert enthalten, werden nicht in die von CALCULATE ausgeführten Operationen aufgenommen.

Beispiel

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE orders  && Open Orders table

SET TALK ON
CLEAR
CALCULATE AVG(order_amt), MIN(order_amt), MAX(order_amt)
CALCULATE STD(order_amt), VAR(order_amt) TO gnStd, gnVar

Siehe auch

AVERAGE | COUNT | DIMENSION | FV( ) | MAX( ) | MIN( ) | PAYMENT( ) | PV( ) | SUM