Combinaisons de commandes récapitulatives

Référence :

Vous pouvez spécifier une différente opération récapitulative pour chaque rupture de tri (champ BY ou ACROSS).

S'il existe plusieurs commandes récapitulatives pour le même champ BY, le message suivant s'affiche et la dernière commande récapitulative spécifiée dans la requête est employée :

(FOC36359)  MORE THAN 1 SUBTOTAL/SUB-TOTAL/RECOMPUTE/SUMMARIZE

Il existe plus d'une commande SUBTOTAL/SUB-TOTAL/RECOMPUTE/SUMMARIZE sur un même champ clé ; ceci n'est pas autorisé. La dernière commande récapitulative spécifiée remplace toutes celles qui restent.

SUMMARIZE et SUB-TOTAL, qui propagent leurs opérations récapitulatives aux sort breaks de niveaux supérieurs, sautent ceux-ci qui ont leurs propres commandes récapitulatives. La propagation des opérations récapitulatives s'effectue selon que le traitement d'opérateur préfixe soit utilisé pour les lignes récapitulatives. Si les opérateurs préfixe :

Les opérateurs préfixe sur les lignes récapitulatives ont pour résultat les mêmes valeurs, que la commande soit RECOMPUTE/SUMMARIZE ou SUBTOTAL/SUB-TOTAL. Pour un champ calculé, l'opérateur préfixe ne s'y applique pas, la valeur est recalculée en utilisant l'expression dans la commande COMPUTE et les valeurs de la ligne récapitulative.

Lorsque vous utilisez différentes commandes récapitulatives pour différents champs de tri, la ligne de total général par défaut hérite la commande récapitulative associée au premier champ de tri dans la requête. Vous pouvez changer l'opération qui s'effectue au niveau du total général en utilisant la phrase ON TABLE pour spécifier une commande récapitulative particulière.

Remarque : le total général est considéré comme le plus haut niveau de tri. Par conséquent, bien que vous puissiez utiliser les commandes SUMMARIZE ou SUB-TOTAL au niveau du total général, ces commandes s'appliquent uniquement au total général et ne se propagent pas vers d'autres lignes du rapport. Au niveau du total général, la commande SUMMARIZE fonctionne comme une commande RECOMPUTE, et la commande SUB-TOTAL fonctionne come une commande SUBTOTAL.


Haut de page

Exemple : Utilisation de SUBTOTAL et RECOMPUTE dans une requête

Dans la requête suivante, le premier champ de tri spécifié est COPIES, qui est associé à la commande RECOMPUTE. Par conséquent, sur la ligne de total général, la valeur de RATIO est recalculée correctement et les valeurs de LISTPR et WHOLESALEPR sont additionnées (parce que ceci est l'opération par défaut lorsque le champ n'est pas calculé par une commande COMPUTE).

TABLE FILE MOVIES
PRINT DIRECTOR LISTPR WHOLESALEPR
COMPUTE RATIO = LISTPR/WHOLESALEPR;
BY COPIES
BY RATING
WHERE COPIES LT 3
WHERE DIRECTOR EQ 'DISNEY W.' OR 'HITCHCOCK A.'
ON COPIES RECOMPUTE AS '*REC: '
ON RATING SUBTOTAL AS '*SUB:  '
END

La sortie est :

COPIES  RATING  DIRECTOR           LISTPR  WHOLESALEPR           RATIO
------  ------  --------           ------  -----------           -----
     1  NR      DISNEY W.           29.95        15.99            1.87
                                                                      
*SUB:   NR                          29.95        15.99            1.87
*REC:    1                          29.95        15.99            1.87
                                                                      
     2  NR      HITCHCOCK A.        19.98         9.00            2.22
                                                                      
*SUB:   NR                          19.98         9.00            2.22
                                                                      
        PG      HITCHCOCK A.        19.98         9.00            2.22
                HITCHCOCK A.        19.98         9.00            2.22
                                                                      
*SUB:   PG                          39.96        18.00            4.44
     2  PG13    HITCHCOCK A.        19.98         9.00            2.22
                                                                      
*SUB:   PG13                        19.98         9.00            2.22
                                                                      
        R       HITCHCOCK A.        19.98         9.00            2.22
                                                                      
*SUB:   R                           19.98         9.00            2.22
*REC:    2                          99.90        45.00            2.22
                                                                      
                                                                      
TOTAL                              129.85        60.99            2.13

Si vous inversez les champs BY, la ligne de total général totalise les valeurs de RATIO ainsi que les valeurs de LISTPR et de WHOLESALEPR parce que la commande SUBTOTAL contrôle la ligne de total général :

TOTAL                              129.85        60.99           12.97

Vous pouvez changer l'opération qui s'effectue au niveau du total général en ajoutant la commande suivante à la requête :

ON TABLE RECOMPUTE

La ligne de total général affiche par la suite les valeurs recalculées :

TOTAL                              129.85        60.99            2.13

Haut de page

Exemple : Utilisation de SUB-TOTAL avec des commandes récapitulatives multiples

Dans la requête suivante, la commande SUB-TOTAL propage son opération au champ de tri DIRECTOR (voir la ligne de total général pour HITCHCOCK, où le sous total des valeurs de RATIO est généré, mais non pas recalculé).

SUB-TOTAL ne se propage pas vers le champ de tri RATING, qui a sa propre commande RECOMPUTE, et la valeur de RATIO est recalculée pour ce champ de tri. La ligne de total général est recalculée parce que l'opération RECOMPUTE s'effectue à un champ de tri à un niveau supérieur à SUB-TOTAL.

TABLE FILE MOVIES
PRINT LISTPR WHOLESALEPR
COMPUTE RATIO = LISTPR/WHOLESALEPR;
BY DIRECTOR
BY RATING
BY COPIES
WHERE COPIES LT 3
WHERE DIRECTOR EQ 'HITCHCOCK A.'
ON COPIES SUB-TOTAL AS '*SUB: '
ON RATING RECOMPUTE AS '*REC:  '
END

La sortie est :

DIRECTOR           RATING  COPIES  LISTPR  WHOLESALEPR           RATIO
--------           ------  ------  ------  -----------           -----
HITCHCOCK A.       NR           2   19.98         9.00            2.22
                                                                      
*SUB:    2                          19.98         9.00            2.22
*REC:   NR                          19.98         9.00            2.22
                                                                      
                   PG           2   19.98         9.00            2.22
                                    19.98         9.00            2.22
                                                                      
*SUB:    2                          39.96        18.00            4.44
*REC:   PG                          39.96        18.00            2.22
                                                                      
                   PG13         2   19.98         9.00            2.22
*SUB:    2                          19.98         9.00            2.2
*REC:   PG13                        19.98         9.00            2.2
                                                                     
HITCHCOCK A.       R            2   19.98         9.00            2.2
                                                                     
*SUB:    2                          19.98         9.00            2.2
*REC:   R                           19.98         9.00            2.2
*TOTAL DIRECTOR HITCHCOCK A.        99.90        45.00           11.1
                                                                     
                                                                     
TOTAL                               99.90        45.00            2.2

Haut de page

Exemple : Utilisation de commandes récapitulatives multiples avec des opérateurs préfixe

La requête suivante imprime la valeur moyenne de LISTPR et la valeur recalculée de RATIO sur les lignes associées au champ de tri RATING. La commande SUB-TOTAL associée au champ de tri COPIES se propage vers tous les champs sur les lignes du champ de tri DIRECTOR et aux colonnes WHOLESALEPR et RATIO1 associées au champ de tri RATING. La ligne de total général ne s'affiche pas dans cette requête.

TABLE FILE MOVIES
PRINT LISTPR WHOLESALEPR
COMPUTE RATIO/D6.2 = LISTPR/WHOLESALEPR;
COMPUTE RATIO1/D6.2 = LISTPR/WHOLESALEPR;
BY DIRECTOR
BY RATING
BY COPIES
WHERE COPIES LT 3
  WHERE DIRECTOR EQ 'KAZAN E.'
  ON RATING  RECOMPUTE  AVE. LISTPR  RATIO AS '*REC:  '
  ON COPIES  SUB-TOTAL                     AS '*SUB:  '
  ON TABLE NOTOTAL
END

Dans la sortie :

La sortie est :

DIRECTOR           RATING  COPIES  LISTPR  WHOLESALEPR   RATIO  RATIO1
--------           ------  ------  ------  -----------   -----  ------
KAZAN E.           NR           1   24.98        14.99    1.67    1.67
 
*SUB:    1                          24.98        14.99    1.67    1.67
 
                                2   19.95         9.99    2.00    2.00
 
*SUB:    2                          19.95         9.99    2.00    2.00
*REC:   NR                          22.46        24.98     .90    3.66
*TOTAL DIRECTOR KAZAN E.            44.93        24.98    3.66    3.66

Haut de page

Exemple : Propagation de commandes récapitulatives avec des listes de champ

Dans la requête suivante, la commande RECOMPUTE a une liste de champs.

SET SUMMARYLINES = OLD
TABLE FILE MOVIES
PRINT LISTPR WHOLESALEPR
COMPUTE RATIO/D6.2 = LISTPR/WHOLESALEPR;
COMPUTE RATIO1/D6.2 = LISTPR/WHOLESALEPR;
BY DIRECTOR
BY RATING
BY COPIES
WHERE COPIES LT 3
  WHERE DIRECTOR EQ 'KAZAN E.'
  ON RATING RECOMPUTE LISTPR RATIO AS '*REC:  '
  ON COPIES SUB-TOTAL AS '*SUB:  '
END

Avec SUMMARYLINES=OLD, seulement ces champs ont des valeurs dans la sortie de rapport :

DIRECTOR           RATING  COPIES  LISTPR  WHOLESALEPR   RATIO  RATIO1
--------           ------  ------  ------  -----------   -----  ------
KAZAN E.           NR           1   24.98        14.99    1.67    1.67
 
*SUB:     1                         24.98                 1.67
 
                                2   19.95         9.99    2.00    2.00
 
*SUB:     2                         19.95                 2.00
*REC:   NR                          44.93                 1.80
*TOTAL DIRECTOR KAZAN E.            44.93                 3.66
 
 
TOTAL                               44.93                 1.80

Avec SUMMARYLINES=NEW, SUB-TOTAL se propage vers toutes les colonnes qui n'auraient pas été remplies autrement. La ligne de total général hérite la commande RECOMPUTE pour les champs listés dans sa liste de champs, et la commande SUB-TOTAL se propage vers les autres colonnes :

DIRECTOR           RATING  COPIES  LISTPR  WHOLESALEPR   RATIO  RATIO1
--------           ------  ------  ------  -----------   -----  ------
KAZAN E.           NR           1   24.98        14.99    1.67    1.67
 
*SUB:     1                         24.98        14.99    1.67    1.67
 
                                2   19.95         9.99    2.00    2.00
 
*SUB:     2                         19.95         9.99    2.00    2.00
*REC:   NR                          44.93        24.98    1.80    3.66
*TOTAL DIRECTOR KAZAN E.            44.93        24.98    3.66    3.66
 
 
TOTAL                               44.93        24.98    1.80    3.66

Haut de page

x
Référence : Notes d'utilisation pour les combinaisons des commandes récapitulatives

WebFOCUS