Puede utilizar operadores de prefijos para realizar cálculos directamente sobre los valores de los campos.
Nota: A menos que cambie una columna o un título ACROSS con una frase AS, el operador de prefijo se añade al título automáticamente. Sin la presencia de una frase AS, el título de columna se contruye mediante el operador de prefijo y el nombre de campo o el atributo TITLE, en el archivo máster (si lo hay):
Para obtener una lista de operadores de prefijo y sus funciones, vaya a Funciones que puede realizar con operadores de prefijos.
Cómo: Referencia: |
Este tema describe la sintaxis y notas básicas de uso de los operadores de prefijo.
Cada operador de prefijo se aplica a un solo campo y afecta solamente a ese campo.
{SUM|COUNT} prefix.fieldname AS 'coltitle'
{PRINT|COMPUTE} RNK.byfield
donde:
La tabla que sigue lista operadores de prefijo y describe la función de cada uno.
Prefijo |
Función |
---|---|
ASQ. |
Calcula la suma media de cuadrados de la desviación estándar en análisis estadístico. |
AVE. |
Calcula el valor medio del campo. |
CNT. |
Cuenta el número de casos del campo. El tipo de datos del resultado siempre es un número entero. |
CNT.DST. |
Cuenta el número de valores distintivos dentro de un campo. |
CT. |
Produce un total acumulado del campo especificado. Este operador se aplica solamente cuando se usa en subpies. Para obtener información detallada, consulte Cómo usar encabezados, pies, títulos y etiquetas. |
DST. |
Determina el número total de valores distintivos en un solo pase de un origen de datos. |
FST. |
Genera la primera ocurrencia física del campo. Se puede usar con campos numéricos o de texto. |
LST. |
Genera el último caso físico del campo. Se puede usar con campos numéricos o de texto. |
MAX. |
Genera el valor máximo del campo. |
MDE. |
Calcula el modo de los valores de los campos. |
MDN. |
Calcula la mediana de los valores de los campos. |
MIN. |
Genera el valor mínimo del campo. |
PCT. |
Calcula el porcentaje de un campo en base a los valores totales de dicho campo. El operador PCT se puede usar tanto con campos de detalle como de sumario. |
PCT.CNT. |
Calcula el porcentaje de un campo en base al número de casos hallados. El formato del resultado es siempre F6.2 y no se puede reformatear. |
RNK. |
Cataloga los casos de un campo de clasificación BY en la solicitud. Se puede usar en comandos PRINT, COMPUTE y en pruebas IF o WHERE TOTAL. |
ROLL. |
Vuelve a calcular los valores de las líneas de resumen utilizando los valores agregados procedentes de las líneas de resumen de nivel inferior. |
RPCT. |
Calcula el porcentaje de un campo en base a los valores totales del campo en una fila. |
ST. |
Genera un valor subtotal del campo especificado en el salto de clasificación del informe. Este operador se aplica solamente cuando se usa en subpies. Para obtener información detallada, consulte Cómo usar encabezados, pies, títulos y etiquetas. |
SUM. |
Suma los valores de los campos. |
TOT. |
Calcula el total de los valores de campo para su uso en un encabezado (incluye pies, subencabezados y subpies de página). |
El prefijo AVE. calcula el valor promedio de un campo particular. El cómputo se realiza en el nivel de clasificación más bajo del comando de visualización. Se calcula como la suma de los valores de campos dentro de un grupo de clasificación dividido por el número de registros en ese grupo de clasificación. Si la solicitud no incluye una frase de clasificación, AVE. calcula la media para todo el informe.
Esta solicitud calcula el promedio del número de horas de invertidas por cada departamento en educación.
TABLE FILE EMPLOYEE SUM AVE.ED_HRS BY DEPARTMENT END
A continuación puede ver la salida de la solicitud.
AVE DEPARTMENT ED_HRS ---------- ------ MIS 38.50 PRODUCTION 20.00
El prefijo ASQ. calcula la suma promedio de cuadrados, que es un componente de la desviación estándar en análisis estadístico (que en la siguiente imagen aparece como una fórmula).
Si el formato de campo es de número entero y recibe un conjunto de números grande, el ASQ. puede ser negativo debido al desborde de campos.
Esta solicitud calcula la suma y la suma de campos al cuadrado para el campo DELIVER_AMT.
TABLE FILE SALES SUM DELIVER_AMT AND ASQ.DELIVER_AMT BY CITY END
A continuación puede ver la salida de la solicitud.
ASQ CITY DELIVER_AMT DELIVER_AMT ---- ----------- ----------- NEW YORK 300 980 NEWARK 60 900 STAMFORD 430 3637 UNIONDALE 80 1600
Los prefijos MAX. y MIN. generan los valores máximos y mínimos, respectivamente, de un grupo de clasificación. Si la solicitud no incluye una frase de clasificación, MAX. y MIN. generan los valores máximos y mínimos para todo el informe.
Esta solicitud de informe calcula los valores máximos y mínimos de SALARY.
TABLE FILE EMPLOYEE SUM MAX.SALARY AND MIN.SALARY END
A continuación puede ver la salida de la solicitud.
MAX MIN SALARY SALARY ------ ------ $29,700.00 $8,650.00
Puede usar los operadores de prefijo MDN. (mediana) y MDE. (modo), junto con un comando de visualización de agregación (SUM, WRITE) y un campo numérico o de fecha inteligente, para calcular la mediana y el modo estadísticos de los valores de un campo.
Estos cálculos no están permitidos en los comandos DEFINE, en expresiones WHERE o IF, ni en comandos de resumen. Si se emplean en una solicitud multiverbo, deben aplicarse al valor de agregación más bajo.
La mediana es el valor medio (50° percentil). Si el número de valores es par, la mediana es el promedio de los dos valores centrales. El modo es el valor más repetido en un conjunto de valores. Si ninguno de los valores aparece más veces que el resto, MDE. devuelve el valor más bajo.
La siguiente solicitud, basada en el origen de datos EMPLOYEE, muestra los salarios actuales y calcula el promedio (media), la mediana y el modo de cada departamento.
TABLE FILE EMPLOYEE SUM CURR_SAL AS 'INDIVIDUAL,SALARIES' AVE.CURR_SAL WITHIN DEPARTMENT AS 'DEPARTMENT,AVERAGE' MDN.CURR_SAL WITHIN DEPARTMENT AS 'DEPARTMENT,MEDIAN' MDE.CURR_SAL WITHIN DEPARTMENT AS 'DEPARTMENT,MODE' BY DEPARTMENT BY CURR_SAL NOPRINT BY LAST_NAME NOPRINT BY FIRST_NAME NOPRINT ON TABLE SET PAGE NOPAGE END
Ambos departamentos tienen el mismo número de empleados. Como los dos valores medios del departamente MIS son iguales, dicho valor es al mismo tiempo el modo y la mediana ($18.480). En el departamento PRODUCTION, la mediana es el promedio de los dos valores medios ($16.100 y $21.120), siendo el modo, al no haber valores duplicados, el valor más bajo ($9.500).
Para cada valor individual de columna, PCT. calcula el porcentaje ocupado por ese campo con respecto al valor total de la columna. Puede controlar cómo se distribuyen los valores en la columna al clasificar la columna usando la frase BY. La nueva columna de porcentajes tiene el mismo formato que el campo original.
También puede determinar los porcentajes de los valores de fila. El operador RPCT. calcula el porcentaje que ocupa con respecto al valor total de la fila, para cada valor individual de una fila clasificada mediante la frase ACROSS. Los valores de porcentajes tienen el mismo formato que el campo original.
Para calcular la parte de horas de formación correspondiente a cada usuario, emita la siguiente solicitud:
TABLE FILE EMPLOYEE SUM ED_HRS PCT.ED_HRS BY LAST_NAME ON TABLE COLUMN-TOTAL END
La salida es:
PCT LAST_NAME ED_HRS ED_HRS --------- ------ ------ BANNING .00 .00 BLACKWOOD 75.00 21.37 CROSS 45.00 12.82 GREENSPAN 25.00 7.12 IRVING 30.00 8.55 JONES 50.00 14.25 MCCOY .00 .00 MCKNIGHT 50.00 14.25 ROMANS 5.00 1.42 SMITH 46.00 13.11 STEVENS 25.00 7.12 TOTAL 351.00 100.00
Dado que PCT. y RPCT adoptan el mismo formato que el campo, puede que el total de la columna no siempre sume 100 debido a la naturaleza de la aritmética de punto flotante.
La siguiente solicitud calcula el total de unidades vendidas por cada producto (columna UNIT_SOLD) y el porcentaje que dicho total representa en relación con la suma de todos los productos vendidos en cada ciudad (columna RPCT.UNIT_SOLD).
TABLE FILE SALES SUM UNIT_SOLD RPCT.UNIT_SOLD ROW-TOTAL BY PROD_CODE ACROSS CITY WHERE CITY EQ 'NEW YORK' OR 'STAMFORD' END
La salida es:
Puesto que UNIT_SOLD tiene formato de número entero, las columnas creadas por PCT. también tienen formato de número entero (I). Por lo tanto, porcentajes individuales pueden estar truncados y el porcentaje total puede ser menor de 100%. Si necesita totales precisos, vuelva a definir el campo con un formato que indique posiciones decimales (D, F).
Al contar los casos en un archivo, una de las necesidades más comunes de los informes es la de determinar los porcentajes relativos de la suma de cada fila, dentro del número total de casos. Puede lograrlo con la sintaxis siguiente, pero sólo para columnas:
PCT.CNT.fieldname
El formato es un valor decimal de seis dígitos con dos posiciones decimales (F6.2).
Esta solicitud muestra el porcentaje relativo de los valores en el campo EMP_ID para cada departamento.
TABLE FILE EMPLOYEE SUM PCT.CNT.EMP_ID BY DEPARTMENT END
La salida es:
PCT.CNT | |
DEPARTMENT ---------- | EMP_ID ------ |
MIS | 50.00 |
PRODUCTION | 50.00 |
Cómo: Referencia: |
El operador de prefijos distinto (DST.) puede usarse para agregar y listar valores únicos de cualquier campo de origen de datos. Su función es parecida a las funciones de columnas SQL COUNT, SUM y AVG (columna DISTINCT), y le permite determinar el número total de valores distintivos en un único pase del origen de datos.
El operador DST. puede usarse con los comandos SUM, PRINT o COUNT, y junto con los operadores de prefijo agregados SUM., CNT. y AVE. Las solicitudes TABLE y TABLEF admiten múltiples operadores DST. Se admiten en solicitudes que emplean las frases BY, ACROSS y FOR.
Tenga en cuenta que, en las solicitudes que emplean el comando PRINT y varios operadores DST, tiene que emitir el comando SET PRINTDST=NEW. Para más información, consulte el manual Cómo desarrollar aplicaciones de informes.
command DST.fieldname
o
SUM [operator].DST.fieldname
donde:
El procedimiento que solicita una cuenta de valores ED_HRS únicos es:
TABLE FILE EMPLOYEE SUM CNT.DST.ED_HRS END
o
TABLE FILE EMPLOYEE COUNT DST.ED_HRS END
La salida es:
COUNT DISTINCT ED_HRS -------- 9
Observe que el recuento incluye registros de los dos empleados que se apellidan SMITH, pero excluye los segundos registros de los valores 50.00, 25.00 y .0, resultando en nueve valores únicos de ED_HRS.
La siguiente solicitud, basada en el origen de datos GGSALES, cuenta el número total de registros por región y después, el número de registros, categorías distintas y productos distintos por región y estado. El operador DST o CNT.DST sólo puede usarse con el último comando de visualización.
TABLE FILE GGSALES COUNT CATEGORY AS 'TOTAL,COUNT' BY REGION SUM CNT.CATEGORY AS 'STATE,COUNT' CNT.DST.CATEGORY CNT.DST.PRODUCT BY REGION BY ST END
La salida es:
COUNT COUNT TOTAL STATE DISTINCT DISTINCT Region COUNT State COUNT CATEGORY PRODUCT ------ ----- ----- ----- -------- -------- Midwest 1085 IL 362 3 9 MO 361 3 9 TX 362 3 9 Northeast 1084 CT 361 3 10 MA 360 3 10 NY 363 3 10 Southeast 1082 FL 361 3 10 GA 361 3 10 TN 360 3 10 West 1080 CA 721 3 10 WA 359 3 10
(FOC950) INVALID REFORMAT OPTION WITH COUNT OR CNT.
(FOC1853) CNT/SUM/AVE.DST CAN ONLY BE USED WITH AGGREGATION VERBS
(FOC1854) THE DST OPERATOR IS ONLY SUPPORTED IN TABLE REQUESTS
(FOC1862) REFORMAT DST.FIELD IS NOT SUPPORTED WITH PRINT
(FOC1864) THE DST OPERATOR IS NOT SUPPORTED WITH NOSPLIT
(FOC1867) DST OPERATOR MUST BE AT THE LOWEST LEVEL OF AGGREGATION
FST. es un prefijo que muestra el primer registro recuperado seleccionado para un campo determinado. LST. muestra el último campo recuperado seleccionado para un campo determinado.
Al usar los operadores de prefijo FST. y LST., es importante comprender la estructura de su origen de datos.
Para más información sobre tipos de segmento y diseño de archivos, consulte el manual Cómo describir datos con el lenguaje WebFOCUS. Si desea reorganizar los datos en el origen de datos o restructurar el origen de datos mietras prepara informes, vaya a Cómo mejorar su procesamiento de informes.
La solicitud que sigue recupera el primer registro lógico en el campo EMP_ID:
TABLE FILE EMPLOYEE SUM FST.EMP_ID END
La salida es:
FST EMP_ID ------ 071382660
El origen de datos EMPLOYEE contiene el segmento DEDUCT, que ordena los campos DED_CODE y DED_AMT del menor valor al mayor (segmento del tipo S1). El campo DED_CODE indica el tipo de deducción, por ejemplo CITY, STATE, FED y FICA. La solicitud a continuación recupera el primer registro lógico de DED_CODE para cada empleado:
TABLE FILE EMPLOYEE SUM FST.DED_CODE BY EMP_ID END
La salida es:
FST EMP_ID DED_CODE ------ -------- 071382660 CITY 112847612 CITY 117593129 CITY 119265415 CITY 119329144 CITY 123764317 CITY 126724188 CITY 219984371 CITY 326179357 CITY 451123478 CITY 543729165 CITY 818692173 CITY
Observe, sin embargo, que el comando SUM LST.DED_CODE habría recuperado el último registro lógico para DED_CODE correspondiente a cada empleado.
Si el registro está en un segmento, con los valores ordenados de mayor a menor (segmento de tipo SH1), el primer registro lógico recuperado por FST. es el valor más alto del conjunto de valores. El operador de prefijo LST. recuperaría, por lo tanto, el valor más bajo en el conjunto de valores.
Por ejemplo, el origen de datos EMPLOYEE contiene el segmento PAYINFO, que ordena los campos JOBCODE, SALARY, PCT_INC y DAT_INC de mayor a menor (segmento de tipo SH1). La solicitud a continuación recupera el primer registro lógico de SALARY para cada empleado:
TABLEF FILE EMPLOYEE SUM FST.SALARY BY EMP_ID END
La salida es:
FST EMP_ID SALARY ------ ------ 071382660 $11,000.00 112847612 $13,200.00 117593129 $18,480.00 119265415 $9,500.00 119329144 $29,700.00 123764317 $26,862.00 126724188 $21,120.00 219984371 $18,480.00 326179357 $21,780.00 451123478 $16,100.00 543729165 $9,000.00 818692173 $27,062.00
Sin embargo, el comando SUM LST.SALARY habría recuperado el último registro lógico para SALARY de cada empleado.
Puede contar ocurrencias y sumar valores en un solo comando de visualización con los operadores de prefijo CNT., SUM. y TOT. Al igual que el comando COUNT, CNT. cuenta los casos del campo que prefija. Al igual que el comando SUM, SUM. suma los valores del campo que prefija. TOT. suma los valores del campo al que va añadido como prefijo cuando se usa en un encabezado (al igual que pies, subencabezados y subpies).
La siguiente solicitud cuenta las ocurrencias de PRODUCT_ID y suma el valor de UNIT_PRICE.
TABLE FILE GGPRODS SUM CNT.PRODUCT_ID AND UNIT_PRICE END
La salida es:
Product Code Unit COUNT Price ------- ----- 10 660.00
La siguiente solicitud cuenta las ocurrencias de PRODUCT_ID y suma el valor de UNIT_PRICE.
TABLE FILE GGPRODS COUNT PRODUCT_ID AND SUM.UNIT_PRICE END
La salida es:
Product Code Unit COUNT Price ------- ----- 10 660.00
La solicitud siguiente usa el operador de prefijo TOT para mostrar el total de salarios actuales de todos los empleados.
TABLE FILE EMPLOYEE PRINT LAST_NAME BY DEPARTMENT ON TABLE SUBFOOT "Total salaries equal: <TOT.CURR_SAL" END
La salida es:
DEPARTMENT LAST_NAME ---------- --------- MIS SMITH JONES MCCOY BLACKWOOD GREENSPAN CROSS PRODUCTION STEVENS SMITH BANNING IRVING ROMANS MCKNIGHT Total salaries equal: $222,284.00
Cómo: |
Cuando se usa RANKED BY fieldname en una frase de clasificación en una solicitud TABLE, no sólo clasifica los datos por el campo especificado, sino que también asigna un valor RANK a los casos. El operador de prefijo RNK. también calcula el rango al tiempo que permite que el valor RANK se imprima en cualquier parte de la página. Se usa este operador especificando RNK.fieldname, donde fieldname es un campo BY en la solicitud.
El proceso de catalogación ocurre después de seleccionar y clasificar los registros. Por lo tanto, no se puede usar el operador RNK. en una prueba de selección WHERE o IF o en un campo virtual (DEFINE). Sin embargo, se puede usar RNK. fieldname en una prueba WHERE o IF TOTAL o en un valor calculado (COMPUTE). Puede cambiar el título de columna predeterminada por el campo de catalogación usando una frase AS.
Puede aplicar el operador RANK. a múltiples campos de clasificación, en cuyo caso, el rango de cada campo BY se calcula en su campo BY de nivel más alto.
En un comando PRINT, una expresión COMPUTE o IF/WHERE TOTAL:
RNK.field ...
donde:
La siguiente solicitud cataloga años de servicio en un departamento y salario en años de servicio y departamento. Fíjese que los años de servicio dependen del valor de TODAY. La salida en este ejemplo era válida cuando se realizó en septiembre de 2006:
DEFINE FILE EMPDATA TODAY/YYMD = &YYMD; YRS_SERVICE/I9 = DATEDIF(HIREDATE,TODAY,'Y'); END TABLE FILE EMPDATA PRINT SALARY RNK.YRS_SERVICE AS 'RANKING,BY,SERVICE' RNK.SALARY AS 'SALARY,RANK' BY DEPT BY HIGHEST YRS_SERVICE BY HIGHEST SALARY NOPRINT WHERE DEPT EQ 'MARKETING' OR 'SALES' ON TABLE SET PAGE NOPAGE END
La salida es:
RANKING BY SALARY DEPT YRS_SERVICE SALARY SERVICE RANK ---- ----------- ------ ------- ------ MARKETING 17 $55,500.00 1 1 $55,500.00 1 1 16 $62,500.00 2 1 $62,500.00 2 1 $62,500.00 2 1 $58,800.00 2 2 $52,000.00 2 3 $35,200.00 2 4 $32,300.00 2 5 15 $50,500.00 3 1 $43,400.00 3 2 SALES 17 $115,000.00 1 1 $54,100.00 1 2 16 $70,000.00 2 1 $43,000.00 2 2 15 $43,600.00 3 1 $39,000.00 3 2 15 $30,500.00 3 3
La siguiente solicitud muestra sólo aquellas filas en los dos niveles superiores de salario que corresponden a la categoría de años de servicio. Fíjese que los años de servicio dependen del valor de TODAY. La salida en este ejemplo era válida cuando se realizó en septiembre de 2006:
DEFINE FILE EMPDATA TODAY/YYMD = &YYMD; YRS_SERVICE/I9 = DATEDIF(HIREDATE,TODAY,'Y'); END TABLE FILE EMPDATA PRINT LASTNAME FIRSTNAME RNK.SALARY BY HIGHEST YRS_SERVICE BY HIGHEST SALARY WHERE TOTAL RNK.SALARY LE 2 END
La salida es:
RANK YRS_SERVICE SALARY LASTNAME FIRSTNAME SALARY ----------- ------ -------- --------- ------ 17 $115,000.00 LASTRA KAREN 1 $80,500.00 NOZAWA JIM 2 16 $83,000.00 SANCHEZ EVELYN 1 $70,000.00 CASSANOVA LOIS 2 15 $62,500.00 HIRSCHMAN ROSE 1 WANG JOHN 1 $50,500.00 LEWIS CASSANDRA 2
La siguiente solicitud coloca un banderín en Y para registros en los cuales el rango salarial en el departamento es menor o igual a 5 y el rango de años de servicio en salario y departamento es menor o igual a 6. De lo contrario, el banderín tiene un valor de N. Fíjese que los años de servicio dependen del valor de TODAY. La salida en este ejemplo era válida cuando se realizó en septiembre de 2006:
DEFINE FILE EMPDATA TODAY/YYMD = &YYMD; YRS_SERVICE/I9 = DATEDIF(HIREDATE,TODAY,'Y'); END TABLE FILE EMPDATA PRINT RNK.SALARY RNK.YRS_SERVICE COMPUTE FLAG/A1 = IF RNK.SALARY LE 5 AND RNK.YRS_SERVICE LE 6 THEN 'Y' ELSE 'N'; BY DEPT BY SALARY BY YRS_SERVICE WHERE DEPT EQ 'MARKETING' OR 'SALES' ON TABLE SET PAGE NOPAGE END
La salida es:
RANK RANK DEPT SALARY YRS_SERVICE SALARY YRS_SERVICE FLAG ---- ------ ----------- ------ ----------- ---- MARKETING $32,300.00 16 1 1 Y $35,200.00 16 2 1 Y $43,400.00 15 3 1 Y $50,500.00 15 4 1 Y $52,000.00 16 5 1 Y $55,500.00 17 6 1 N 6 1 N $58,800.00 16 7 1 N $62,500.00 16 8 1 N 8 1 N 8 1 N SALES $30,500.00 15 1 1 Y $39,000.00 15 2 1 Y $43,000.00 16 3 1 Y $43,600.00 15 4 1 Y $54,100.00 17 5 1 Y $70,000.00 16 6 1 N $115,000.00 17 7 1 N
Cómo: Referencia: |
Emplee SUMMARIZE y RECOMPUTE para volver a calcular valores en saltos de campo de clasificación, teniendo en cuenta que estos cálculos utilizan los datos de detalla para calcular el valor de la línea de resumen.
Emplee el operador ROLL. junto con otro operador de prefijo, en una línea de resumen, para volver a calcular los valores de salto de clasificación con los valores de las líneas de resumen generadas para el salto de clasificación de nivel inferior.
Combinaciones de operadores compatibles:
ROLL.prefix, en una línea de resumen, indica que la operación del prefijo se llevará a cabo en los valores de resumen del próximo comando de resumen de más bajo nivel.
Si el operador ROLL. se utiliza sin otro operador de prefijo, se trata como si fuera un SUM. Por tanto, si el comando de sumario del campo BY más bajo especifica AVE., y el inmediatamente superior especifica ROLL., el resultado será la suma de los promedios. Para obtener el promedio de los promedios, emplee ROLL.AVE en el nivel superior.
Nota: SUMMARIZE y SUB-TOTAL hacen que los mismos cálculos se propaguen a todos los saltos de clasificación de nivel superior.
BY field {SUMMARIZE|SUBTOTAL|SUB-TOTAL|RECOMPUTE} [ROLL.][prefix1.] [field1 field2 ...|*] [ROLL.][prefix2.] [fieldn ...]
O:
BY field
ON field {SUMMARIZE|SUBTOTAL|SUB-TOTAL|RECOMPUTE} ROLL.[prefix.] [field1 field2 ...|*]
donde:
Indica que los valores de sumario deben calcularse utilizando los valores de sumario del comando de sumario del nivel inmediatamente inferior.
Es un campo BY en la solicitud.
Operadores de prefijo utilizados en valores de sumario. Puede ser uno de los siguientes operadores: SUM. (operador por defecto cuando no se ha especificado ninguno), AVE., MAX., MIN., FST., LST., CNT., ASQ.
Campos que van a quedar resumidos.
Indica que todos los campos, numéricos y alfanuméricos, deben estar incluidos en las líneas de resumen. Puede usar el asterisco para mostrar todas las columnas o hacer referencia a columnas específicas que desee mostrar.
La siguiente solicitud, basada en el origen de datos GGSALES, contiene dos campos de clasificación: REGION y ST. El comando de sumario de REGION aplica el operador AVE. a la suma de los valores de unidad de cada estado.
TABLE FILE GGSALES SUM UNITS AS 'Inventory ' BY REGION BY ST ON REGION SUBTOTAL AVE. AS 'Average' WHERE DATE GE 19971001 WHERE REGION EQ 'West' OR 'Northeast' ON TABLE SET PAGE NOPAGE END
En la salida, se obtiene el promedio de los valores de UNITS de cada estado, para calcular el subtotal correspondiente a cada región. Los valores de UNITS de cada estado se emplean, además, para calcular el promedio de la fila del total general.
Region State Inventory ------ ----- ---------- Northeast CT 37234 MA 35720 NY 36248 Average Northeast 36400 West CA 75553 WA 40969 Average West 58261 TOTAL 45144
La siguiente versión de la solicitud añade un comando de sumario para la fila del total general, que incluye el operador ROLL. :
TABLE FILE GGSALES SUM UNITS AS 'Inventory ' BY REGION BY ST ON REGION SUBTOTAL AVE. AS 'Average' WHERE DATE GE 19971001 WHERE REGION EQ 'West' OR 'Northeast' ON TABLE SUBTOTAL ROLL.AVE. AS ROLL.AVE ON TABLE SET PAGE NOPAGE END
En la salida, se obtiene el promedio de los valores de UNITS de cada estado, para calcular el subtotal de cada región; estos valores de subtotal de región se utilizan, a su vez, para calcular el promedio de la fila del total general:
Region State Inventory ------ ----- ---------- Northeast CT 37234 MA 35720 NY 36248 Average Northeast 36400 West CA 75553 WA 40969 Average West 58261 ROLL.AVE 47330
La siguiente solicitud, basada en el origen de datos GGSALES, tiene tres campos BY. El comando SUBTOTAL del campo de clasificación PRODUCT especifica AVE., mientras que el comando SUMMARIZE correspondiente al campo de clasificación de nivel superior, REGION, especifica ROLL.AVE.
TABLE FILE GGSALES SUM UNITS BY REGION BY PRODUCT BY HIGHEST DATE WHERE DATE GE 19971001 WHERE REGION EQ 'Midwest' OR 'Northeast' WHERE PRODUCT LIKE 'C%' ON PRODUCT SUBTOTAL AVE. ON REGION SUMMARIZE ROLL.AVE. AS ROLL.AVE ON TABLE SET PAGE NOPAGE END
En la salida, las filas de detalle de cada fecha se utilizan para calcular el promedio de cada producto. Debido a la presencia de ROLL.AVE en el nivel de región, se emplean los promedios de cada producto para calcular los promedios de cada región, mientras que los promedios de región se emplean para calcular el promedio de la línea de total general:
Region Product Date Unit Sales ------ ------- ---- ---------- Midwest Coffee Grinder 1997/12/01 4648 1997/11/01 3144 1997/10/01 1597 *TOTAL PRODUCT Coffee Grinder 3129 Coffee Pot 1997/12/01 1769 1997/11/01 1462 1997/10/01 2346 *TOTAL PRODUCT Coffee Pot 1859 Croissant 1997/12/01 7436 1997/11/01 5528 1997/10/01 6060 *TOTAL PRODUCT Croissant 6341 ROLL.AVE Midwest 3776 Northeast Capuccino 1997/12/01 1188 1997/11/01 2282 1997/10/01 3675 *TOTAL PRODUCT Capuccino 2381 Coffee Grinder 1997/12/01 1536 1997/11/01 1399 1997/10/01 1315 *TOTAL PRODUCT Coffee Grinder 1416 Coffee Pot 1997/12/01 1442 1997/11/01 2129 1997/10/01 2082 *TOTAL PRODUCT Coffee Pot 1884 Croissant 1997/12/01 4291 1997/11/01 6978 1997/10/01 4741 *TOTAL PRODUCT Croissant 5336 ROLL.AVE Northeast 2754 TOTAL 3265
WebFOCUS |