Moin,
ich habe folgendes (konstruiertes) Problem:
Ich möchte die Ausgabe der nachfolgenden Query ( Beispiel als Anlage ) auf die ersten 3 Ranks begrenzen. Soll heissen: Pro Mitarbeitergruppe die 3 Mitarbeiter, mit dem höchsten Umsatz.
Ich bekomme momentan:
möchte aber gerne bekommen:
Hat jemand da eine pfiffige Idee?
TIA,
Karsten
ich habe folgendes (konstruiertes) Problem:
Ich möchte die Ausgabe der nachfolgenden Query ( Beispiel als Anlage ) auf die ersten 3 Ranks begrenzen. Soll heissen: Pro Mitarbeitergruppe die 3 Mitarbeiter, mit dem höchsten Umsatz.
Code:
WITH CTE_Umsatz ( MitGrpNr, MitNr, Betrag ) AS ( SELECT m.MitarbeiterGrpNr, u.MitarbeiterNr, Sum( u.Betrag ) FROM Umsatz u JOIN Mitarbeiter m ON m.MitarbeiterNr = u.MitarbeiterNr group by m.MitarbeiterGrpNr, u.MitarbeiterNr ) Select MitGrpNr, MitNr, Betrag, RANK() Over (PARTITION by MitGrpNr Order by Betrag desc ) as ranks FROM CTE_Umsatz
Code:
MitGrpNr MitNr Betrag ranks ----------- ----------- --------------------- -------------------- 1 4 4,59 1 1 3 3,59 2 1 2 2,59 3 1 1 1,59 4 2 8 8,59 1 2 7 7,59 2 2 6 6,59 3 2 5 5,59 4 3 12 12,59 1 3 11 11,59 2 3 10 10,59 3 3 9 9,59 4 4 13 13,59 1
Code:
MitGrpNr MitNr Betrag ranks ----------- ----------- --------------------- -------------------- 1 4 4,59 1 1 3 3,59 2 1 2 2,59 3 2 8 8,59 1 2 7 7,59 2 2 6 6,59 3 3 12 12,59 1 3 11 11,59 2 3 10 10,59 3 4 13 13,59 1
TIA,
Karsten
Comment