Anzeigefelder mit Präfixoperatoren manipulieren

In diesem Abschnitt:

Sie können Präfixoperatoren verwenden, um Berechnungen direkt mit den Werten von Feldern durchzuführen.

Hinweis: Falls Sie eine Spalte oder einen ACROSS-Titel mit einer AS-Phrase verändern, wird der Präfixoperator automatisch zum Titel. Ohne eine AS-Phrase wird der Spaltentitel mit dem Präfixoperator und entweder dem Feldnamen oder dem TITLE-Attribut in der Masterdatei (falls vorhanden) erstellt:

Eine Liste von Präfixoperatoren und deren Funktionen finden Sie unter Funktionen, die Sie mit Präfixoperatoren ausführen können.


Nach oben

x
Grundlagen der Präfixoperatoren

Vorgehensweise:

Referenz:

In diesem Kapitel werden die grundlegende Syntax und Hinweise für die Verwendung von Präfixoperatoren beschrieben.



x
Syntax: Präfixoperatoren verwenden

Jeder Präfixoperator wird auf ein einzelnes Feld angewendet, und wirkt sich nur auf dieses Feld aus.

{SUM|COUNT} prefix.fieldname AS 'coltitle'
{PRINT|COMPUTE} RNK.byfield

Hierbei gilt:

Präfix
Ist ein beliebiger Präfixoperator.
fieldname
Ist der Name des Feldes, das im Report angezeigt werden soll.
'coltitle'
Ist der Spaltentitel für die Reportspalte in einfachen Anführungszeichen.
byfield
Ist der Name eines vertikalen Sortierfeldes, das im Report eingestuft werden soll.


x
Referenz: Verwendungshinweise für Präfixoperatoren


x
Referenz: Funktionen, die Sie mit Präfixoperatoren ausführen können

Die folgende Tabelle listet Präfixoperatoren auf und beschreibt die jeweiligen Funktionen.

Präfix

Funktion

ASQ.

Berechnet die durchschnittliche Quadratsumme für die Standardabweichung in statistischen Analysen.

AVE.

Berechnet den durchschnittlichen Wert des Feldes.

CNT.

Zählt die Vorkommnisse des Feldes. Der Datentyp des Ergebnisses ist immer Ganze Zahl.

CNT.DST.

Zählt die verschiedenen Werte innerhalb eines Feldes.

CT.

Erzeugt eine kumulative Gesamtsumme des angegebenen Feldes. Dieser Operator trifft nur zu, wenn er in Zwischenfußzeilen verwendet wird. Weitere Informationen finden Sie unter Kopfzeilen, Fußzeilen, Titel und Labels verwenden.

DST.

Bestimmt die Gesamtanzahl der eindeutigen Werte in nur einem Durchlauf einer Datenquelle.

FST.

Erzeugt die erste physische Instanz des Feldes. Kann mit numerischen Feldern oder Textfeldern verwendet werden.

LST.

Erzeugt die letzte physische Instanz des Feldes. Kann mit numerischen Feldern oder Textfeldern verwendet werden.

MAX. 

Erzeugt den Maximalwert des Feldes.

MDE.

Berechnet den Modus der Feldwerte.

MDN.

Berechnet den Mittelwert der Feldwerte.

MIN.

Erzeugt den Minimalwert des Feldes.

PCT.

Berechnet den Prozentsatz eines Feldes basierend auf den Gesamtwerten des Feldes. Der PCT-Operator kann für Detail- sowie Summenfelder verwendet werden.

PCT.CNT.

Berechnet den Prozentsatz eines Feldes basierend auf der Anzahl der gefundenen Instanzen. Das Format des Ergebnisses ist immer F6.2 und kann nicht neu formatiert werden.

RNK.

Stuft die Instanzen eines BY-Sortierfeldes in der Anfrage ein. Kann in PRINT-Befehlen, COMPUTE-Befehlen und IF- oder WHERE TOTAL-Tests verwendet werden.

RPCT.

Berechnet den Prozentsatz eines Feldes basierend auf den Gesamtwerten des Feldes in einer Zeile.

ST.

Erzeugt einen Zwischensummenwert des angegebenen Feldes an einem Sortierumbruch im Report. Dieser Operator trifft nur zu, wenn er in Zwischenfußzeilen verwendet wird. Weitere Informationen finden Sie unter Kopfzeilen, Fußzeilen, Titel und Labels verwenden.

SUM.

Summiert die Feldwerte.

TOT.

Summiert die Feldwerte für die Verwendung in einer Kopfzeile (einschließlich Fußzeilen, Zwischenkopfzeilen und Zwischenfußzeilen).



x
Den Durchschnitt der Werte eines Feldes berechnen

Das Präfix AVE. berechnet den Durchschnittswert eines bestimmten Feldes. Die Berechnung wird auf der niedrigsten Sortierebene des Anzeigebefehls durchgeführt. Wird berechnet als die Summe der Feldwerte in einer Sortiergruppe geteilt durch die Anzahl der Datensätze in dieser Sortiergruppe. Wenn die Anfrage keine Sortierphrase enthält, berechnet AVE. den Durchschnitt für den gesamten Report.



Beispiel: Den Durchschnitt der Werte eines Feldes berechnen

Diese Anfrage berechnet die durchschnittliche Anzahl von Fortbildungsstunden in jeder Abteilung.

TABLE FILE EMPLOYEE
SUM AVE.ED_HRS BY DEPARTMENT
END

Nachfolgend sehen Sie die Ausgabe der Anfrage:

            AVE   
DEPARTMENT  ED_HRS
----------  ------
MIS          38.50
PRODUCTION   20.00

Nach oben

x
Den Durchschnitt der Summe quadrierter Felder berechnen

Das Präfix ASQ. berechnet die durchschnittliche Summe von Quadraten, was eine Komponente der Normalabweichung bei der statistischen Analyse ist (wird in der folgenden Abbildung als eine Formel angezeigt).

Wenn das Feldformat ganzzahlig ist und Sie eine große Zahlengruppe erhalten, kann es vorkommen, dass das ASQ.-Ergebnis aufgrund von Feldüberlauf negativ ist.



Beispiel: Den Durchschnitt der Summe quadrierter Felder berechnen

Diese Anfrage berechnet die Summe und die Summe der quadrierten Felder für das Feld DELIVER_AMT.

TABLE FILE SALES
SUM DELIVER_AMT AND ASQ.DELIVER_AMT
BY CITY
END

Nachfolgend sehen Sie die Ausgabe der Anfrage:

                              ASQ        
CITY             DELIVER_AMT  DELIVER_AMT
----             -----------  -----------
NEW YORK                 300          980
NEWARK                    60          900
STAMFORD                 430         3637
UNIONDALE                 80         1600

Nach oben

x
Maximale und minimale Feldwerte berechnen

Die Präfixe MAX. und MIN. erzeugen innerhalb einer Sortiergruppe die Maximal- bzw. Minimalwerte. Wenn die Anfrage keine Sortierphrase enthält, erzeugen MAX. und MIN. die Maximal- und Minimalwerte für den gesamten Report.



Beispiel: Maximale und minimale Feldwerte berechnen

Diese Reportanfrage berechnet die Maximal- und Minimalwerte von SALARY.

TABLE FILE EMPLOYEE
SUM MAX.SALARY AND MIN.SALARY
END

Nachfolgend sehen Sie die Ausgabe der Anfrage:

    MAX              MIN   
    SALARY           SALARY
    ------           ------
$29,700.00        $8,650.00

Nach oben

x
Mittel- und Moduswerte für ein Feld berechnen

Sie können den MDN verwenden. (Median) und MDE. (Modus) Präfixoperatoren, die in Verbindung mit einem Aggregation-Anzeigebefehl (SUM, WRITE) und einem numerischen oder Smart-Datumsfeld den statistischen Mittelwert und Modus der Feldwerte berechnen.

Diese Berechnungen werden in DEFINE-, WHERE-, IF-, und Zusammenfassungsbefehlen bzw. Ausdrücken nicht unterstützt. Bei der Verwendung in einer Mehrfachverbanfrage müssen sie auf der untersten Ebene der Aggregation verwendet werden.

Der Mittelwert ist die mathematische Mitte (50 Prozent). Bei einer geraden Anzahl von Werten, ist der Mittelwert der Durchschnitt der beiden mittlweren Werte. Der Modus ist der Wert, der in Satz von Werten am häufigsten vor kommt. Wenn kein Wert häufiger als die anderen auftritt, MDE. Gibt den niedrigsten Wert zurück.



Beispiel: Berechnung des Mittelwerts und des Modus

Die folgende Anfrage an die EMPLOYEE-Datenquelle zeigt die aktuellen Gehältern und berechnet den (mittleren) Durchschnitt, Mittelwert und Modus innerhalb der jeweiligen Abteilung.

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

Beide Abteilungen verfügen über eine gerade Anzahl von Mitarbeitern. Für die Abteilung MIS sind die beiden mittleren Werte dieselben, so dass dieser Wert ($18.480,00 ) sowohl der Mittelwert wie auch der der Modus ist. Für die Abteilung PRODUCTION ist der Mittelwert der Durchschnitt der beiden mittleren Werte ($16.100,00 und $21.120,00). Da es keine doppelten Werte gibt, ist der Modus der niedrigste Wert ($9.500,00).


Nach oben

x
Prozentsätze je Spalte und je Zeile berechnen

Für jeden individuellen Wert in einer Spalte berechnet PCT., welchen Prozentanteil dieses Feld am gesamten Spaltenwert hat. Sie können steuern, wie Werte in der Spalte verteilt werden, indem Sie die Spalte mit der BY-Phrase sortieren. Die neue Spalte mit Prozentanteilen hat dasselbe Format wie das ursprüngliche Feld.

Sie können auch Prozentanteile für Zeilenwerte bestimmen. Der RPCT.-Operator berechnet für jeden individuellen Wert in einer Zeile, die mit der ACROSS-Phrase sortiert wurde, welchen Prozentanteil er an der Gesamtsumme der Zeile hat. Die Prozentwerte haben dasselbe Format wie das ursprüngliche Feld.



Beispiel: Prozentsätze je Spalte berechnen

Geben Sie die folgende Anfrage aus, um den Anteil jedes Angestellten an den Fortbildungsstunden zu berechnen:

TABLE FILE EMPLOYEE
SUM ED_HRS PCT.ED_HRS BY LAST_NAME
ON TABLE COLUMN-TOTAL
END

Die Ausgabe ist:

                         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

Da PCT. und RPCT. dasselbe Format annehmen wie das Feld, kann es sein, dass die Gesamtsumme der Spalte nicht immer genau 100 beträgt, aufgrund von Gleitkomma-Arithmetik.



Beispiel: Prozentsätze je Zeile berechnen

Die folgende Anfrage berechnet die Gesamtstückzahl für jedes Produkt (UNIT_SOLD-Spalte) und den Prozentanteil dieser Summe an allen verkauften Produkten (RPCT.UNIT_SOLD-Spalte) in jeder Stadt.

TABLE FILE SALES
SUM UNIT_SOLD RPCT.UNIT_SOLD ROW-TOTAL
BY PROD_CODE
ACROSS CITY    WHERE
CITY EQ 'NEW YORK' OR 'STAMFORD'
END

Die Ausgabe ist:

Da UNIT_SOLD ein Ganze Zahl-Format hat, haben die Spalten, die durch RPCT. erzeugt werden, auch ein Ganze Zahl-Format (I). Es kann daher vorkommen, dass einzelne Prozentanteile abgeschnitten werden und die Summe weniger als 100% ist. Definieren Sie das Feld mit einem Format neu, das Dezimalstellen anzeigt (D, F), wenn Sie eine präzise Summe benötigen.


Nach oben

x
Direkten Prozentsatz einer Anzahl produzieren

Wenn in einer Datei Vorkommnisse gezählt werden, bestimmt die gemeinsame Notwendigkeit für die Erstellung von Reports den relativen Anteil der Anzahl in jeder Zeile an der Gesamtzahl der Instanzen. Sie können dies nur für Spalten durchführen und zwar mit der folgenden Syntax:

PCT.CNT.fieldname

Das Format ist ein Dezimalwert mit sechs Stellen und zwei Dezimalstellen (F6.2).



Beispiel: Direkten Prozentsatz einer Anzahl produzieren

Diese Anfrage veranschaulicht den relativen Prozentanteil der Werte im EMP_ID-Feld für jede Abteilung.

TABLE FILE EMPLOYEE
SUM PCT.CNT.EMP_ID
BY DEPARTMENT
END

Die Ausgabe ist:

PCT.CNT
DEPARTMENT
----------
 EMP_ID
 ------
MIS
  50.00
PRODUCTION
  50.00


x
Eindeutige Werte aggregieren und auflisten

Vorgehensweise:

Referenz:

Der eindeutige Präfixoperator (DST.) kann verwendet werden, um eindeutige Werte eines beliebigen Datenquellenfeldes zu aggregieren und aufzulisten. Er ähnelt in seiner Funktionsweise den Spaltenfunktionen SQL COUNT, SUM und AVG(DISTINCT col) und ermöglicht es Ihnen, die Gesamtanzahl der eindeutigen Werte in nur einem Durchlauf einer Datenquelle zu bestimmen.

Der DST.-Operator kann verwendet werden mit den Befehlen SUM, PRINT oder COUNT, und auch in Verbindung mit den aggregierenden Präfixoperatoren SUM., CNT. und AVE. Es werden in TABLE- und TABLEF-Anfragen mehrere DST.-Operatoren unterstützt. Sie werden unterstützt in Anfragen, die die Phrasen BY, ACROSS und FOR verwenden.

Beachten Sie, dass Sie in einer Anfrage, in der der Befehl PRINT und mehrere DST-Operatoren verwendet werden, den Befehl SET PRINTDST=NEW ausgeben sollten. Genaueres finden Sie im Handbuch Reportanwendungen entwickeln .



x
Syntax: Verwenden Sie den Operator Distinct
command DST.fieldname

oder

SUM [operator].DST.fieldname

Hierbei gilt:

command
Ist SUM, PRINT oder COUNT.
DST.
Steht für den Operator Distinct.
fieldname
Steht für das Anzeigefeldobjekt oder den Feldnamen.
Operator
Steht für SUM., CNT. oder AVE.


Beispiel: Den Operator Distinct verwenden

Die Prozedur, mit der Sie die Anzahl eindeutiger ED_HRS-Werte abfragen, ist entweder:

TABLE FILE EMPLOYEE
SUM CNT.DST.ED_HRS
END

oder

TABLE FILE EMPLOYEE
COUNT DST.ED_HRS
END

Die Ausgabe ist:

COUNT   
DISTINCT
ED_HRS  
--------
       9

Beachten Sie, dass beide Angestellten mit dem Nachnamen SMITH mitgezählt werden, jedoch die zweiten Datensätze für die Werte 50.00, 25.00 und .0 ausgeschlossen werden, was zu neun eindeutigen ED_HRS-Werten führt.



Beispiel: Individuelle Feldwerte mit mehreren Anzeigebefehlen zählen

Die folgende Anfrage mit der GGSALES-Datenquelle zählt die Gesamtanzahl der Datensätze nach Region, dann die Anzahl der Datensätze, individuelle Kategorien und individuelle Produkte nach Region und Staat. Die Operatoren DST oder CNT.DST können nur mit dem letzten Anzeigebefehl verwendet werden:

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

Die Ausgabe ist:

                                  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


x
Referenz: Beschränkungen des Distinkt-Operators

Nach oben

x
Erste und letzte Datensätze abrufen

FST. ist ein Präfix, das den ersten abgerufenen Datensatz anzeigt, der für ein gegebenes Feld ausgewählt ist. LST. zeigt den letzten abgerufenen Datensatz an, der für ein gegebenes Feld ausgewählt ist.

Wenn Sie die Präfixoperatoren FST. und LST. verwenden, ist es wichtig, dass Sie die Struktur Ihrer Datenquelle kennen.

Weitere Informationen über Segmenttypen finden Sie im Handbuch Daten mit der WebFOCUS-Sprache beschreiben . Falls Sie Daten in einer Datenquelle neu organisieren oder die Datenquelle während der Reporterstellung neu strukturieren möchten, finden Sie Informationen unter Die Reportverarbeitung verbessern.



Beispiel: Den ersten Datensatz abrufen

Die folgende Anfrage ruft den ersten logischen Datensatz im EMP_ID-Feld ab:

TABLE FILE EMPLOYEE
SUM FST.EMP_ID
END

Die Ausgabe ist:

FST      
EMP_ID   
------   
071382660


Beispiel: Segmenttypen und der Abruf von Datensätze

Die Datenquelle EMPLOYEE enthält das Segment DEDUCT, das die Felder DED_CODE und DED_AMT vom niedrigsten Wert zum höchsten Wert anordnet (Segmenttyp S1). Das Feld DED_CODE gibt den Abzugstyp an, wie z. B. CITY, STATE, FED und FICA. In der nächsten Anfrage wird für jeden Angestellten der erste logische Datensatz für DED_CODE abgerufen:

TABLE FILE EMPLOYEE
SUM FST.DED_CODE
BY EMP_ID
END

Die Ausgabe ist:

           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

Beachten Sie jedoch, dass der Befehl SUM LST.DED_CODE den letzten logischen Datensatz für DED_CODE für jeden Angestellten abgerufen hätte.

Wenn sich der Datensatz in einem Segment mit Werten befindet, die absteigend sortiert sind (Segmenttyp SH1), ist der erste logische Datensatz, den der FST.-Präfixoperator abruft, der höchste Wert im Werteset. Der LST.-Präfixoperator würde daher den niedrigsten Wert im Werteset abrufen.

Die Datenquelle EMPLOYEE enthält beispielsweise das Segment PAYINFO, das die Felder JOBCODE, SALARY, PCT_INC und DAT_INC in absteigender Reihenfolge anordnet (Segmenttyp SH1). In der nächsten Anfrage wird für jeden Angestellten der erste logische Datensatz für SALARY abgerufen:

TABLEF FILE EMPLOYEE
SUM FST.SALARY
BY EMP_ID
END

Die Ausgabe ist:

                    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

Es hätte jedoch der Befehl SUM LST.SALARY den letzten logischen Datensatz für SALARY für jeden Angestellten abgerufen.


Nach oben

x
Werte summieren und zählen

Sie können mit einem Anzeigebefehl Vorkommnisse zählen und Werte summieren, indem Sie die Präfixoperatoren CNT., SUM. und TOT. verwenden. Wie der COUNT-Befehl zählt auch CNT. die Vorkommnisse des Feldes, dessen Präfix es ist. Wie der SUM-Befehl summiert auch SUM. die Werte des Feldes, dessen Präfix es ist. TOT. summiert die Werte des Feldes, dessen Präfix es ist, wenn es in einer Kopfzeile verwendet wird (einschließlich Fußzeilen, Zwischenkopfzeilen und Zwischenfußzeilen).



Beispiel: Werte mit CNT zählen

Die folgende Anfrage zählt die Vorkommnisse von PRODUCT_ID und summiert den Wert von UNIT_PRICE.

TABLE FILE GGPRODS
SUM CNT.PRODUCT_ID AND UNIT_PRICE
END

Die Ausgabe ist:

Product          
Code        Unit 
COUNT       Price
-------     -----
     10    660.00


Beispiel: Werte mit SUM summieren

Die folgende Anfrage zählt die Vorkommnisse von PRODUCT_ID und summiert den Wert von UNIT_PRICE.

TABLE FILE GGPRODS
COUNT PRODUCT_ID AND SUM.UNIT_PRICE
END

Die Ausgabe ist:

Product          
Code        Unit 
COUNT       Price
-------     -----
     10    660.00


Beispiel: Werte mit TOT summieren

In der folgenden Anfrage wird der Präfixoperator TOT verwendet, um die Summe der aktuellen Gehälter für alle Angestellten anzuzeigen.

TABLE FILE EMPLOYEE
PRINT LAST_NAME
BY DEPARTMENT
ON TABLE SUBFOOT
"Total salaries equal: <TOT.CURR_SAL"
END

Die Ausgabe ist:

DEPARTMENT  LAST_NAME                
----------  ---------                
MIS         SMITH                    
            JONES                    
            MCCOY                    
            BLACKWOOD                
            GREENSPAN                
            CROSS                    
PRODUCTION  STEVENS                  
            SMITH                    
            BANNING                  
            IRVING                   
            ROMANS                   
            MCKNIGHT                 
Total salaries equal:     $222,284.00

Nach oben

x
Sortierfeldwerte mit RNK einordnen.

Vorgehensweise:

Wenn RANKED BY fieldname in einer Sortierphrase in einer TABLE-Anfrage verwendet wird, werden nicht nur die Daten nach dem angegebenen Feld sortiert, sondern den Instanzen auch ein RANK-Wert zugewiesen. Der RNK.-Präfixoperator berechnet auch den Rang und erlaubt gleichzeitig, dass der RANK-Wert an einer beliebigen Stelle auf der Seite gedruckt wird. Sie verwenden diesen Operator, indem Sie RNK.fieldname angeben, wobei fieldname ein BY-Feld in der Anfrage ist.

Die Rangfolge wird zugewiesen, nachdem die Datensätze ausgewählt und sortiert wurden. Es kann daher der RNK.-Operator nicht in einem WHERE- oder IF-Auswahltest oder in einem virtuellen Feld (DEFINE) verwendet werden. Es kann RNK.fieldname jedoch in einem WHERE TOTAL- oder IF TOTAL-Test oder in einem berechneten Wert (COMPUTE) verwendet werden. Sie können den Default-Spaltentitel für das Rangfeld mit einer AS-Phrase ändern.

Sie können den RNK.-Operator auf mehrere Sortierfelder anwenden. In diesem Fall wird der Rang für jedes BY-Feld innerhalb des ihm übergeordneten BY-Feldes berechnet.



x
Syntax: Ränge mit dem Präfixoperator RNK. berechnen

In einem PRINT-Befehl, einer COMPUTE-Formel oder einer IF/WHERE TOTAL-Formel:

RNK.field  ...

Hierbei gilt:

field
Ist ein vertikales (BY) Sortierfeld in der Anfrage.


Beispiel: Rangfolge in Sortiergruppen

Die folgende Anfrage stuft Dienstjahre in einer Abteilung und Gehalt in den Dienstjahren und der Abteilung ein. Beachten Sie, dass Dienstjahre vom Wert von TODAY abhängen. Die Ausgabe für dieses Beispiel war gültig, als es im September 2006 ausgeführt wurde:

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

Die Ausgabe ist:

                                                    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


Beispiel: RNK. in einem WHERE TOTAL-Test verwenden

Die folgende Anfrage zeigt nur die Zeilen mit den zwei höchsten Gehältern in der Kategorie Dienstjahre an. Beachten Sie, dass Dienstjahre vom Wert von TODAY abhängen. Die Ausgabe für dieses Beispiel war gültig, als es im September 2006 ausgeführt wurde:

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

Die Ausgabe ist:

                                                           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


Beispiel: RNK. in einem COMPUTE-Befehl verwenden

Die folgende Anzeige markiert Y für Datensätze, bei denen der Rang des Gehalts in der Abteilung kleiner oder gleich 5 ist und der Rang der Dienstjahre innerhalb von Gehalt und Abteilung weniger oder gleich 6 ist. Ansonsten hat die Flag den Wert N. Beachten Sie, dass die Dienstjahre vom Wert von TODAY abhängen. Die Ausgabe für dieses Beispiel war gültig, als es im September 2006 ausgeführt wurde:

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

Die Ausgabe ist:

                                                 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

WebFOCUS