[Oracle] Datensätze in eine bestimmte Anzahl von Gruppen unterteilen - NTILE
( 0 Votes )
Hauptkategorie: Programmieren
Kategorie: SQL
Erstellt am 06.03.2012
Zuletzt aktualisiert am 06.03.2012
Geschrieben von Jonny132
Oftmals ist es Hilfreich ein Ergebnis einer Abfrage in gleichgroße Gruppen zu unterteilen. Dies ist mit Hilfe des Schlüsselwortes NTILE möglich.Ein Anwendungsfall wäre z.B. Das Einkommen der Mitarbeiter. Wir möchten alle Mitarbeiter in 3 gleichgroße Gehaltsgruppen unterteilen. Von Gut-Verdienend über Mittelmäßig-Verdienend bis hin zu Schlecht-Verdienend.
Die Syntax dieses Befehls sieht folgendermaßen aus:
Select name, gehalt, NTILE(3) OVER(ORDER BY gehalt DESC) as gehaltsgruppe from mitarbeiterErgebnis:
NAME | GEHALT | GEHALTSGRUPPE |
Cheff | 10000 | 1 |
Peter | 6000 | 1 |
Susanne | 5000 | 1 |
Wolfgang | 4000 | 2 |
Michaela | 2600 | 2 |
Stefan | 2400 | 2 |
Oliver | 2100 | 3 |
Claudia | 1800 | 3 |
Hubert | 1500 | 3 |
Eigenschaften von NTILE:
- Erstellt wenn möglich immer gleichgroße Gruppen
- ORDER BY muss immer angegeben werden
- Die Anzahl der Gruppen wird automatisch reduziert, falls weniger Werte als Gruppen vorhanden sind