Rang (Informatik) – Wikipedia

Der Rang bezeichnet in der Informatik eine aufsteigende Reihenfolge von Objekten.

Bei der Datenaggregation für Data-Warehouse-Anwendungen kommt die Rang-Funktion oft zum Einsatz. Durch diese Funktion werden Sätze aus einer Selektion mit einer fortlaufenden Nummerierung versehen.

Folgende Varianten der Rang-Funktion werden eingesetzt:

  • Duplikate sollen denselben Rang oder unterschiedliche Ränge erhalten
  • Partitionierung bedeutet (in diesem Zusammenhang), dass beim Wechsel eines übergeordneten Ordnungskriteriums die Nummerierung wieder von neuem beginnt

Die Liste der Produkte soll mit einem Rang ausgegeben werden. Duplikate sollen dabei nicht berücksichtigt werden.

In der Spalte RANG wird der Rang ohne Partitionierung ausgegeben.

In der Spalte PART_RANG wird der Rang mit Partitionierung ausgegeben.

SQL für DB2 LUW

   select      abteilung    , produkt_nr    , row_number() over(order     by abteilung        , produkt_nr) rang    , row_number() over(partition by abteilung order by produkt_nr) part_rang    from pr    order by abteilung, produkt_nr    ; 
        ABTEILUNG PRODUKT_NR       RANG  PART_RANG    ---------- ---------- ---------- ----------             1          2          1          1             1          3          2          2             1          3          3          3             1          3          4          4             1          4          5          5             1          7          6          6             1          9          7          7             2          1          8          1             2          3          9          2             2          3         10          3 

Die Liste der Produkte soll mit einem Rang ausgegeben werden. Dieses Mal sollen Duplikate denselben Rang erhalten.

In der Spalte DRANG wird der Rang ohne Partitionierung ausgegeben.

In der Spalte PART_DRANG wird der Rang mit Partitionierung ausgegeben.

SQL für DB2 LUW

   select      abteilung    , produkt_nr    , dense_rank() over(order     by abteilung        , produkt_nr) drang    , dense_rank() over(partition by abteilung order by produkt_nr) part_drang    from pr    order by abteilung, produkt_nr    ; 
    ABTEILUNG PRODUKT_NR      DRANG PART_DRANG     --------- ---------- ---------- ----------             1          2          1          1             1          3          2          2             1          3          2          2             1          3          2          2             1          4          3          3             1          7          4          4             1          9          5          5             2          1          6          1             2          3          7          2             2          3          7          2