2016-07-31 10 views
1

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

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;