Cómo establecer un ranking de valores de campos de clasificación

En esta sección:

Cómo:

Cuando clasifica filas de clasificación de informe con la frase BY, puede indicar el rango numérico de cada fila. La catalogación de valores de campo de clasificación suele combinarse con la restricción de valores de campo de clasificación por rango.

Tenga en cuenta que es posible que varias filas de informe tengan el mismo rango si tienen valores de campo de clasificación idénticos.

El título de columna predeterminado de RANKED BY es RANK. Puede cambiar el título mediante una frase AS. El campo RANK tiene un formato I7. Por tanto, la columna RANK de un informe puede tener hasta siete dígitos. Para más información, consulte Cómo usar encabezados, pies, títulos y etiquetas.

Puede catalogar valores agregados con la sintaxis RANKED BY TOTAL. Para obtener información detallada, consulte Cómo clasificar y agregar columnas de informes.


Principio de página

x
Sintaxis: Cómo Catalogar valores de campos de clasificación
RANKED [AS 'name'] BY  {HIGHEST|LOWEST} [n]  sortfield [AS 'text']

donde:

nombre

Es el nuevo nombre del título de columna RANK.

sortfield

Es el nombre del campo de clasificación. El campo puede ser numérico o alfanumérico.

n

Es el número de categorías del ranking mostrado en la salida de informes.

text

Es el encabezado de la columna utilizada para el campo de clasificación, en la salida del informe.



Ejemplo: Cómo establecer un ranking de valores de campos de clasificación

Emita la siguiente solicitud para mostrar una lista de nombres de empleados en orden salarial, indicando el rango de cada empleado por salario. Fíjese que los empleados Jones y McCoy tienen el mismo rango porque su salario actual es el mismo.

TABLE FILE EMPLOYEE
PRINT LAST_NAME
RANKED AS 'Sequence' BY CURR_SAL
END

La salida es:



Ejemplo: Cómo catalogar y restringir valores de campos de clasificación

La catalogación de valores de campo de clasificación suele combinarse con la restricción de valores de campo de clasificación por rango, como en el ejemplo siguiente.

TABLE FILE EMPLOYEE
PRINT LAST_NAME
RANKED BY HIGHEST 5 CURR_SAL
END

La salida es:

RANK         CURR_SAL  LAST_NAME
----         --------  ---------
   1       $29,700.00  BANNING  
   2       $27,062.00  CROSS    
   3       $26,862.00  IRVING   
   4       $21,780.00  BLACKWOOD
   5       $21,120.00  ROMANS

Principio de página

x
Rankings DENSE y SPARK

Cómo:

Referencia:

En WebFOCUS, las frases de clasificación RANK BY y BY {HIGHEST|LOWEST} n clasifican la salida del informe y asignan números del ranking a la secuencia de valores de datos. Al asignar un rango a un valor de datos, WebFOCUS no se salta por defecto los números del ranking. Esto quiere decir que, incluso si asigna múltiples valores de datos al mismo rango, el número del ranking del grupo de valores siguiente será el próximo número entero de la secuencia. Este método de asignación de números de ranking se denomina denso.

Algunos motores relacionales asignan números de ranking, mediante el método disperso. Con el ranking disperso, si se ha asignado el mismo número de ranking a múltiples valores de datos, el próximo número del ranking será el número anterior de ranking más el número de múltiplos.

Puede usar el parámetro RANK de WebFOCUS para controlar el tipo de ranking empleado por WebFOCUS. Además, si está accediendo a un origen de datos relacional, puede establecer el tipo de ranking empleado por el motor relacional como su método de ranking, y así optimizar el cálculo de los rangos. Algunos motores relacionales incluyen funciones para ambos tipos de ranking. En este caso, puede optimizar cualquier configuración.



x
Referencia: Cómo optimizar el ranking

Para pasar el procesamiento de rankings a su motor relacional, su solicitud debe:



x
Sintaxis: Cómo Controlar el método de ranking
SET RANK={DENSE|SPARSE}

donde:

DENSE

Especifica el ranking denso. Con este método, cada número del ranking es el próximo número entero de la secuencia, incluso cuando se ha asignado el mismo rango a múltiples valores de datos. El valor por defecto es DENSE.

SPARSE

Especifica el ranking disperso. Con este método, si se ha asignado el mismo número de ranking a múltiples valores de datos, el próximo número del ranking será el número anterior de ranking más el número de múltiplos.

Por consiguiente, utilice una de estas variantes de la frase BY en su solicitud:

RANKED BY {HIGHEST|LOWEST} [n] sortfield [AS 'text']

o

BY {HIGHEST|LOWEST} n sortfield [AS 'text']

donde:

n

Es el número más alto del ranking que aparece en la salida del informe, cuando se usa la frase RANKED BY. Si no se está utilizando RANKED, se trata del número de valores distintos de campos de clasificación mostrado en la salida del informe, cuando SET RANK=DENSE, y el número total de líneas de salida para el campo de clasificación, con SET RANK=SPARSE.

sortfield

Es el nombre del campo de clasificación.

text

Es el encabezado que se va usar para la columna del campo de clasificación, en la salida del informe.



x
Referencia: Notas de uso de SET RANK


Ejemplo: Cómo establecer un ranking de valores en un origen de datos de FOCUS

La siguiente solicitud, basada en el origen de datos EMPDATA, establece un ranking de salarios descendente, por división. El parámetro RANK se encuentra establecido en DENSE (por defecto).

SET RANK = DENSE           
TABLE FILE EMPDATA         
PRINT LASTNAME FIRSTNAME   
RANKED BY HIGHEST 12 SALARY
BY DIV                     
ON TABLE SET PAGE NOPAGE   
END                        

La salida indica que hay seis empleados en el número 6 del ranking. Con el método denso, el próximo número del ranking será el número entero siguiente, más alto, el 7.

RANK           SALARY  DIV   LASTNAME         FIRSTNAME
----           ------  ---   --------         ---------
   1      $115,000.00  CE    LASTRA           KAREN    
   2       $83,000.00  CORP  SANCHEZ          EVELYN   
   3       $80,500.00  SE    NOZAWA           JIM      
   4       $79,000.00  CORP  SOPENA           BEN      
   5       $70,000.00  WE    CASSANOVA        LOIS     
   6       $62,500.00  CE    ADAMS            RUTH     
                       CORP  CVEK             MARCUS   
                             WANG             JOHN     
                       NE    WHITE            VERONICA 
                       SE    BELLA            MICHAEL  
                             HIRSCHMAN        ROSE     
   7       $58,800.00  WE    GOTLIEB          CHRIS    
   8       $55,500.00  CORP  VALINO           DANIEL   
                       NE    PATEL            DORINA   
   9       $54,100.00  CE    ADDAMS           PETER    
                       WE    FERNSTEIN        ERWIN    
  10       $52,000.00  NE    LIEBER           JEFF     
  11       $50,500.00  SE    LEWIS            CASSANDRA
  12       $49,500.00  CE    ROSENTHAL        KATRINA
                       SE    WANG             KATE       

Si ejecuta la misma solicitud con SET RANK=SPARSE, obtendrá la siguiente salida. Puesto que la categoría 6 del ranking incluye seis empleados, el próximo número del ranking será 6 + 6.

RANK           SALARY  DIV   LASTNAME         FIRSTNAME
----           ------  ---   --------         ---------
   1      $115,000.00  CE    LASTRA           KAREN    
   2       $83,000.00  CORP  SANCHEZ          EVELYN   
   3       $80,500.00  SE    NOZAWA           JIM      
   4       $79,000.00  CORP  SOPENA           BEN      
   5       $70,000.00  WE    CASSANOVA        LOIS     
   6       $62,500.00  CE    ADAMS            RUTH     
                       CORP  CVEK             MARCUS   
                             WANG             JOHN     
                       NE    WHITE            VERONICA 
                       SE    BELLA            MICHAEL  
                             HIRSCHMAN        ROSE     
  12       $58,800.00  WE    GOTLIEB          CHRIS    


Ejemplo: Cómo limitar el número de valores de campos de clasificación

La siguiente solicitud, basada en el origen de datos EMPDATA, clasifica los salarios en un orden descendente, por división, e imprime los 12 más altos. El parámetro RANK se encuentra establecido en DENSE (por defecto).

SET RANK = DENSE           
TABLE FILE EMPDATA         
PRINT LASTNAME FIRSTNAME   
BY HIGHEST 12 SALARY
BY DIV                     
ON TABLE SET PAGE NOPAGE   
END                        

La salida presenta los 12 valores distintos de salario más altos, aunque algunos de los empleados tengan el mismo salario.

     SALARY  DIV   LASTNAME         FIRSTNAME
     ------  ---   --------         ---------
$115,000.00  CE    LASTRA           KAREN    
 $83,000.00  CORP  SANCHEZ          EVELYN   
 $80,500.00  SE    NOZAWA           JIM      
 $79,000.00  CORP  SOPENA           BEN      
 $70,000.00  WE    CASSANOVA        LOIS     
 $62,500.00  CE    ADAMS            RUTH     
             CORP  CVEK             MARCUS   
                   WANG             JOHN     
             NE    WHITE            VERONICA 
             SE    BELLA            MICHAEL  
                   HIRSCHMAN        ROSE     
 $58,800.00  WE    GOTLIEB          CHRIS    
 $55,500.00  CORP  VALINO           DANIEL   
             NE    PATEL            DORINA   
 $54,100.00  CE    ADDAMS           PETER    
             WE    FERNSTEIN        ERWIN    
 $52,000.00  NE    LIEBER           JEFF     
 $50,500.00  SE    LEWIS            CASSANDRA
 $49,500.00  CE    ROSENTHAL        KATRINA 
             SE    WANG             KATE      

Si ejecuta la misma solicitud con SET RANK=SPARSE, obtendrá la siguiente salida. Puesto que hay seis empleados con un salario de $62,500, el valor se cuenta 6 veces para que sólo aparezcan 12 líneas (siete valores distintos de salario) en la salida.

     SALARY  DIV   LASTNAME         FIRSTNAME
     ------  ---   --------         ---------
$115,000.00  CE    LASTRA           KAREN    
 $83,000.00  CORP  SANCHEZ          EVELYN   
 $80,500.00  SE    NOZAWA           JIM      
 $79,000.00  CORP  SOPENA           BEN      
 $70,000.00  WE    CASSANOVA        LOIS     
 $62,500.00  CE    ADAMS            RUTH     
             CORP  CVEK             MARCUS   
                   WANG             JOHN     
             NE    WHITE            VERONICA 
             SE    BELLA            MICHAEL  
                   HIRSCHMAN        ROSE     
 $58,800.00  WE    GOTLIEB          CHRIS       

WebFOCUS