Heim >Datenbank >MySQL-Tutorial >Wie erhalte ich die besten N-Ergebnisse pro Gruppe in Oracle ohne Unterabfragen?
Erhalten Sie Top-Ergebnisse für jede Gruppe in der Oracle-Datenbank
Frage:
Erhalten Sie die besten N-Ergebnisse für jede Gruppe in einer Oracle-Datenbank, ohne eine Unterabfrage zu verwenden.
Beispiel:
Betrachten Sie die Tabelle mit den Mitarbeiterinformationen:
emp_id | name | occupation |
---|---|---|
1 | John Smith | Accountant |
2 | Jane Doe | Engineer |
3 | Jack Black | Funnyman |
Ziel ist es, aus jedem Beruf drei Mitarbeiter (Top 3) abzurufen, ohne eine Unterabfrage zu verwenden.
Lösung:
<code class="language-sql">select * from (select emp_id, name, occupation, rank() over (partition by occupation order by emp_id) as rank from employee) where rank <= 3;</code>
Anleitung:
Über die Funktionrank()
wird jedem Mitarbeiter innerhalb seines jeweiligen Berufs eine Rangfolge zugewiesen. Die partition by occupation
-Klausel stellt sicher, dass jeder Beruf separat gerankt wird.
rank <= 3
Die Bedingung filtert Mitarbeiter heraus, deren Rang in jedem Beruf kleiner oder gleich 3 ist.
Zusätzliche Informationen:
Weitere Informationen zur Funktion rank()
finden Sie in den folgenden Ressourcen: https://www.php.cn/link/56138186020206c2b1d99be41c8dc9b8
Das obige ist der detaillierte Inhalt vonWie erhalte ich die besten N-Ergebnisse pro Gruppe in Oracle ohne Unterabfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!