Share via


CALCULATE (Comando)

Realiza operaciones financieras y estadísticas en campos de una tabla o expresiones que utilicen campos.

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

Parámetros

  • eExpressionList
    Especifica las expresiones que pueden contener cualquier combinación de las siguientes funciones:

    AVG(nExpression)

    CNT( )

    MAX(eExpression)

    MIN(eExpression)

    NPV(nExpression1, nExpression2 [, nExpression3])

    STD(nExpression)

    SUM(nExpression)

    VAR(nExpression)

    Las funciones de la lista eExpressionList están separadas con comas. Estas funciones son específicas de CALCULATE y se describen detalladamente más adelante en esta sección. No deben confundirse con funciones independientes de nombre similar. Por ejemplo, CALCULATE MIN( ) no es lo mismo que MIN( ).

  • Scope
    Especifica un intervalo de registros utilizados en el cálculo. Solamente se incluyen en dicho cálculo los registros incluidos en el intervalo. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Para obtener más información acerca de las cláusulas de alcance, vea el tema Cláusulas de alcance. Los comandos que incluyen Scope sólo actúan sobre la tabla del área de trabajo activa.

    El alcance predeterminado de CALCULATE es ALL (todos los registros).

  • FOR lExpression1
    Especifica que sólo los registros que satisfacen la condición lógica lExpression1 se incluirán en el cálculo. La inclusión de FOR permite incluir registros en el cálculo de manera condicional, al filtrar los registros no deseados.

    Rushmore optimizará una consulta CALCULATE ... FOR si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR. Si desea obtener más información acerca de las expresiones optimizables con Rushmore, vea SET OPTIMIZE y Utilizar Rushmore para agilizar el acceso a los datos.

  • WHILE lExpression2
    Especifica una condición por la cual los registros se incluyen en el cálculo siempre y cuando la expresión lógica lExpression2 dé como resultado verdadero (.T.).

  • TO VarList
    Especifica una o varias variables donde se almacenan los resultados del cálculo. Si una variable especificada no existe, Visual FoxPro la creará automáticamente con el nombre que usted especifique.

  • TO ARRAY ArrayName
    Especifica el nombre de la matriz donde se pueden almacenar los resultados del cálculo. Si el nombre de matriz especificado no existe, Visual FoxPro creará automáticamente una matriz con este nombre. Si la matriz existe pero no es suficientemente grande para contener todos los resultados, Visual FoxPro aumentará automáticamente su tamaño para dar cabida a la información. Si una matriz existente es mayor de lo necesario, los elementos adicionales permanecerán sin cambios. Los resultados se almacenan en los elementos de la matriz en el orden en que se especifican en el comando CALCULATE.

  • NOOPTIMIZE
    Desactiva la optimización Rushmore de CALCULATE. Si desea obtener más información, vea SET OPTIMIZE y Utilizar Rushmore para agilizar el acceso a los datos.

  • AVG(nExpression)
    Calcula la media aritmética de nExpression. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.

  • CNT( )
    Devuelve el número de registros de la tabla. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.

  • MAX(eExpression)
    Devuelve el valor mayor o el más reciente de eExpression. En la cláusula MAX( ) es posible especificar cualquier campo (Character, Date, DateTime, Numeric, Float, Integer, Double o Currency) o cualquier expresión válida que utilice campos de estos tipos. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.

  • MIN(eExpression)
    Devuelve el valor menor o el más antiguo de eExpression. En eExpression es posible especificar cualquier campo (Character, Date, DateTime, Numeric, Float, Integer, Double o Currency) o cualquier expresión válida que utilice campos de estos tipos. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.

  • NPV(nExpression1, nExpression2 [, nExpression3])
    Calcula el valor neto actual de una serie de flujos de caja futuros descontados a una tasa de interés periódica constante.

    nExpression1 es la tasa de interés expresada como valor decimal.

    nExpression2 es un campo, expresión de campo o expresión numérica que representa una serie de flujos de caja. Cada flujo de caja puede ser positivo o negativo. En los casos en que nExpression2 sea un campo, el valor del campo en cada registro de la tabla se considerará un flujo de caja.

    nExpression3 es una inversión inicial opcional. Si no se incluye la inversión inicial, se supondrá que ésta ocurre al final del primer período. Esta inversión inicial es el primer registro del campo y es negativa para representar una retirada de caja.

    Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.

  • STD(nExpression)
    Calcula la desviación estándar de nExpression. La desviación estándar mide el grado en que los valores de los campos o expresiones que utilizan campos difieren del promedio de todos los valores. Cuanto menor sea la desviación estándar, menos varían los valores con respecto al promedio. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.

  • SUM(nExpression)
    Calcula el total de la suma de los valores de nExpression. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.

  • VAR(nExpression)
    Calcula la varianza del promedio de nExpression. La varianza es la desviación estándar elevada al cuadrado. Cuanto menor sea la varianza, menos varían los valores con respecto al promedio. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.

  • IN nWorkArea | cTableAlias
    Especifica el área de trabajo o el alias de tabla al que afecta el comando CALCULATE. Utilice esta cláusula para especificar un área de trabajo o una tabla fuera del área de trabajo actual.

Observaciones

Los registros que contienen el valor nulo no se incluyen en las operaciones que realiza CALCULATE.

Ejemplo

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

Vea también

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