Dans cette section : Comment : |
Lorsque vous triez des lignes de rapport avec des phrases BY, vous pouvez indiquer le classement numérique de chaque ligne. Le classement des valeurs de critères de tri est souvent combiné avec la limitation des valeurs de critères de tri par classement.
Remarquez qu'il est possible que plusieurs lignes de rapport aient le même classement s'ils ont des valeurs de critères de tri identiques.
Le titre de colonne par défaut de RANKED BY est RANK. Vous pouvez changer le titre avec une phrase AS. Le champ RANK a le format I7. Alors, la colonne RANK d'un rapport peut comprendre jusqu'à 7 chiffres. Pour plus d'informations, consultez Utilisation d'en-têtes, pieds de page, titres et étiquettes.
Vous pouvez classer des valeurs agrégées en utilisant la syntaxe RANKED BY TOTAL. Pour plus de détails, consultez Trier et agréger des colonnes de rapport.
RANKED [AS 'name'] BY {HIGHEST|LOWEST} [n] sortfield [AS 'text']
où :
Le nouveau nom du titre de colonne RANK.
Est le nom du critère de tri. Le champ peut être numérique ou alphanumérique.
Est le numéro des catégories de rang à afficher sur la sortie du rapport.
Est l'en-tête de colonne à utiliser pour la colonne du critère de tri dans la sortie de rapport.
Lancez la requête suivante pour afficher une liste des noms d'employés dans l'ordre de salaire, indiquant le classement de chaque employé par salaire. Notez que les employés Jones et McCoy ont le même classement car ils ont le même salaire actuel.
TABLE FILE EMPLOYEE PRINT LAST_NAME RANKED AS 'Sequence' BY CURR_SAL END
La sortie est :
Le classement des valeurs de critère de tri est souvent combiné avec la limitation des valeurs de critère de tri par classement, comme le montre l'exemple suivant.
TABLE FILE EMPLOYEE PRINT LAST_NAME RANKED BY HIGHEST 5 CURR_SAL END
La sortie est :
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
Comment : Référence : |
Les phrases de tri WebFOCUS RANK BY et BY {HIGHEST|LOWEST} n trient la sortie de rapport et attribuent des numéros de catégories à la séquence de valeurs de données. Lors de l'attribution d'un rang à une valeur de données, par défaut WebFOCUS ne saute les numéros de rang. Cela signifie que même si plusieurs valeurs de données sont attribuées au même rang, le numéro de rang pour le prochain groupe de valeurs est le prochain entier séquentiel. Cette méthode d'attribution de numéros de rang est appelé dense.
Certains moteurs relationnels attribuent des numéros de rang en utilisant une méthode appelée éparse. Avec un classement éparse, si plusieurs valeurs de données sont attribuées le même numéro de rang, le prochain numéro de rang sera le numéro de rang précédent, plus le nombre de multiples.
Vous pouvez utiliser le paramètre WebFOCUS RANK pour contrôler le type de classement effectué par WebFOCUS. De plus, si vous accédez à une source de données relationnelle, vous pouvez définir la méthode de classement au type de classement effectué par votre moteur relationnel de façon à ce que le calcul du rang puisse être optimisé. Certains moteurs relationnels ont des fonctions de classement à la fois dense et éparse. Dans ce cas, les deux réglages peuvent être optimisés.
Pour passer le processus du classement à un moteur relationnel, votre requête doit :
[RANKED] BY [HIGHEST] n
SET RANK={DENSE|SPARSE}
où :
Spécifie le classement dense. Avec cette méthode, chaque numéro de classement représente le prochain entier séquentiel, et ce même quand le même classement est affecté à plusieurs valeurs de données. DENSE est la valeur par défaut.
Spécifie le classement dispersé. Avec cette méthode, si le même numéro de classement est affecté à plusieurs valeurs de données, le prochain numéro de classement sera le numéro de classement précédent plus le nombre de multiples.
Puis, dans votre requête, utilisez l'une des formes suivantes de la phrase BY :
RANKED BY {HIGHEST|LOWEST} [n] sortfield [AS 'text']
ou
BY {HIGHEST|LOWEST} n sortfield [AS 'text']
où :
Elle numéro de classement le plus élevé affiche sur la sortie de rapport quand la phrase RANKED BY est utilisée. Quand RANKED n'est pas utilisé, il s'agit du nombre de valeurs de champ de tri distinctes à afficher sur la sortie du rapport quand SET RANK=DENSE, et le nombre total de lignes en sortie pour le champ de tri quand SET RANK=SPARSE.
Est le nom du critère de tri.
Est l'en-tête de colonne à utiliser pour le critère de tri dans la sortie du rapport.
La requête suivante, sur la source de données EMPDATA, classe les salaires en ordre décroissant par division. Le paramètre RANK est mis sur DENSE (par défaut).
SET RANK = DENSE TABLE FILE EMPDATA PRINT LASTNAME FIRSTNAME RANKED BY HIGHEST 12 SALARY BY DIV ON TABLE SET PAGE NOPAGE END
Sur la sortie, six employés sont inclus dans le numéro de classement 6. Avec un classement dense, le prochain numéro de classement est le prochain entier le plus élevé, 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
Exécuter la requête avec SET RANK=SPARSE produit la sortie suivante. La catégorie de classement 6 incluant six employés, le prochain numéro de classement est 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
La requête suivante, sur la source de données EMPDATA, classe les salaires en ordre décroissant par division et imprime les 12 salaires les plus élevés. Le paramètre RANK est mis sur DENSE (par défaut).
SET RANK = DENSE TABLE FILE EMPDATA PRINT LASTNAME FIRSTNAME BY HIGHEST 12 SALARY BY DIV ON TABLE SET PAGE NOPAGE END
Sur la sortie, 12 valeurs de salaire distinctes sont affichées, et ce même si certains employés ont le même salaire.
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
Exécuter la requête avec SET RANK=SPARSE produit la sortie suivante. Six employés ayant un salaire de $62,500, cette valeur est comptée de 6 fois de manière à n'afficher que 12 lignes (cette valeur salaire distincte) sur la sortie.
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 |