Ich habe eine Tabelle von Employees
und dazugehöriger Tabelle des Group of Employees
Die Beziehung eins zu mehreren ist, wenn die - id
aus der Tabelle Employee groups
oft in der Tabelle angezeigt werden kann - Employees
ich wissen will, welche Mitarbeitergruppe die meisten Mitarbeiter enthält. Oder mit anderen Worten, einige der emp_group ID
erscheint am häufigsten Employees
Tabelle. Wie kann ich es abrufen?Doppelzählung in Tabelle
1
A
Antwort
2
Dies ist eine grundlegende Aggregationsanfrage:
select top (1) with ties groupid, count(*) as numemployees
from employee_groups
group by groupid
order by count(*);
0
A 'Top 1 mit Verbindungen' ist eine Möglichkeit, es zu tun.
Aber auch ein DENSE_RANK kann dafür verwendet werden.
A DENSE_RANK absteigend auf die Zählung würde den Top-Gruppen die gleiche Anzahl 1.
select groupid, total_employees
from (
select
groupid,
count(distinct employeeid) as total_employees,
dense_rank() over (order by count(distinct employeeid) desc) as rn
from [Group of Employees]
group by groupid
) q
where rn = 1
order by groupid;