Limit ohne Max Funktion bestimmen

Werbung:
Also ich habe gerade

Select Abteilung.Abteilungsid, count(personalnr) as AngestelltenAnzahl
From Abteilung
Join Angestellter
On arbeitetinabteilung =Abteilungid
Group by abteilungsleid

Wie soll ich nun einen Vergleich machen?
 
Nach dem Gruppierung könnte man mittels eine Window Funktion die Abteilung mit den meisten Angestellten bestimmen. Und dann zu der Abteilungstabelle joinen:

Sowas in der Art:
Code:
select abt.*
from abteilung abt
  join (
     select abteilungid,
            dense_rank() over (order by count(*) desc) as rnk
     from angestellte
     group by abteilungid
  )  ang on ang.abteilungid = abt.id and ang.rnk = 1

dense_rank() vergibt für die Abteilung mit den meisten Angestellten den Wert 1, mit den zweitmeisten den Wert 2 usw weil das nach der Anzahl absteigend sortiert wurde.
 
Kann man auch in der selben Tabelle immer alle Werte miteinander vergleichen muss man ja einen Wert haben der größer als alle anderen ist
 
Du kannst es auch mit >= ALL machen:

Code:
select a1.abteilungid, 
       count(*) as num_angestellte
from angestellte a1
group by a1.abteilungid 
having count(*) >= ALL (select count(*) 
                        from angestellte a2
                        where a1.abteilungid <> a2.abteilungid)

Das wieder mit der Abteilungstabelle zu joinen um den Namen zu bekommen überlasse ich Dir.

P.S.: in SQL Server geht es sowieso grundsätzlich nur ohne LIMIT, da dort weder LIMIT noch FETCH FIRST n ROWS ONLY unterstützt wird 🤭
 
Du kannst es auch mit >= ALL machen:

Code:
select a1.abteilungid,
       count(*) as num_angestellte
from angestellte a1
group by a1.abteilungid
having count(*) >= ALL (select count(*)
                        from angestellte a2
                        where a1.abteilungid <> a2.abteilungid)

Das wieder mit der Abteilungstabelle zu joinen um den Namen zu bekommen überlasse ich Dir.

P.S.: in SQL Server geht es sowieso grundsätzlich nur ohne LIMIT, da dort weder LIMIT noch FETCH FIRST n ROWS ONLY unterstützt wird 🤭
Danke !! Aber wieso <> muss es nicht nur >
 
Werbung:
Zurück
Oben