| Die drei TOP-Verdiener ermitteln |
|
|
| Freitag, 17. Oktober 2008 um 17:10 | ||||
|
Wenn man aus einer Tabelle nur die ersten oder letzten zehn Datensätze sortiert erhalten möchte, muß man sich was einfallen lassen, denn anders als z.B. in mySQL gibt es bei ORACLE kein Offset oder Limit.
In jeder Tabelle existiert eine Pseudo-Spalte ROWNUM, die die gelieferten Datensätze beginnend mit 1 durchnummeriert. Das folgende Statement würde deshalb niemals einen Datensatz liefern, denn da es keinen ersten Datensatz gibt, der die Bedingung erfüllt, kann es auch keinen zweiten geben:
Um nun also die ersten drei Mitarbeiter aus der EMP-Tabelle zu ermitteln, könnte man formulieren:
Nun wollen wir aber die ersten drei TOP-Verdiener, also die, die am meisten verdienen. Einfach nur ein ORDER-BY anhängen, klappt nicht, denn zuerst wird ermittelt, welche Datensätze die WHERE-Bedingung erfüllen und erst dann wird sortiert. Wir würden also nach wie vor die ersten drei Datensätze erhalten, nach dem Gehalt sortiert. Abhilfe schafft die sogenannte INLINE-VIEW: Wir sortieren die Datensätze vor, um in einem ‘äußeren’ Select die ersten drei Datensätze der sortierten Menge zu erhalten.
|
||||
| Aktualisiert ( Samstag, 18. Oktober 2008 um 16:29 ) | ||||

