Zum Inhalt springen

Rang (Informatik)

aus Wikipedia, der freien Enzyklopädie

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

Verwendung

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

Beispiel

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 <syntaxhighlight lang="sql">

  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
  ;</syntaxhighlight>

<syntaxhighlight lang="text">

   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

</syntaxhighlight>

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 <syntaxhighlight lang="sql">

  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
  ;</syntaxhighlight>

<syntaxhighlight lang="text">

   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</syntaxhighlight>

Weblinks