Erhalte die besten Ergebnisse für jede Gruppe (in Oracle) [duplizieren]

8

Wie könnte ich N Ergebnisse für mehrere Gruppen in erhalten? eine Oracle-Abfrage.

Zum Beispiel in der folgenden Tabelle:

%Vor%

Es gibt viel mehr Reihen mit mehr Besetzungen. Ich hätte gern drei Angestellte (sagen wir) von jedem Beruf.

Gibt es eine Möglichkeit, dies zu tun, ohne eine Unterabfrage zu verwenden?

    
oneself 25.09.2008, 18:09
quelle

5 Antworten

11

Dies erzeugt, was Sie wollen, und es verwendet keine herstellerspezifischen SQL-Funktionen wie TOP N oder RANK ().

%Vor%

In diesem Beispiel erhalten die drei Mitarbeiter die niedrigsten emp_id-Werte pro Beruf. Sie können das Attribut, das im Ungleichheitsvergleich verwendet wird, ändern, um es den Top-Mitarbeitern mit Namen oder was auch immer zu geben.

    
Bill Karwin 25.09.2008, 20:48
quelle
29

Ich habe gerade keine Oracle-Instanz zur Hand, also habe ich das nicht getestet:

%Vor%

Hier ist ein Link, wie Rang funktioniert: Ссылка

    
jop 25.09.2008 18:27
quelle
2

RowNum zum Rang hinzufügen:

%Vor%     
trung 07.06.2011 10:05
quelle
2

hat dies in SQL Server getestet (und verwendet Unterabfrage)

%Vor%

machen Sie einfach eine ORDER by in der Unterabfrage, um Ihre Anforderungen zu erfüllen

    
Leon Tayson 25.09.2008 18:32
quelle
2

Ich bin mir nicht sicher, ob das sehr effizient ist, aber vielleicht ein Startplatz?

%Vor%

Dies sollte Ihnen Zeilen geben, die drei verschiedene Mitarbeiter enthalten, alle in demselben Beruf. Leider gibt es Ihnen ALLE Kombinationen davon.

Kann jemand das bitte ablehnen?

    
billjamesdev 25.09.2008 18:24
quelle