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.
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.
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