Heim >Datenbank >MySQL-Tutorial >Wie erhalte ich die besten N-Ergebnisse pro Gruppe in Oracle ohne Unterabfragen?

Wie erhalte ich die besten N-Ergebnisse pro Gruppe in Oracle ohne Unterabfragen?

DDD
DDDOriginal
2025-01-19 15:01:38210Durchsuche

How to Get the Top N Results per Group in Oracle Without Subqueries?

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 Funktion

rank() 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn