2016-04-08 8 views
0

Ich mache eine kleine Aufgabe für eine Datenbankklasse von mir. Ich muss eine SQL-Abfrage schreiben, um die Nachnamen aller Mitarbeitermanager aufzulisten, gefolgt von der Anzahl der Mitarbeiter, die sie verwalten. Diese ist das, was der Befehl einen Mitarbeiter in eine Tabelle zum Einfügen wie folgt aussieht:sql Abfrageliste Anzahl der Mitarbeiter, die ein Manager verwaltet

INSERT INTO Employee (Emp_No, Emp_Fname, Emp_Lname, Emp_Status, 
Emp_Salary, Emp_Comm, Emp_HireDate, Emp_Mgr_Emp_No, Job_Title, Dept_No) 
VALUES (7566, 'Mary', 'Jones', 'active', 2975, NULL, '02-APR-92', 7839,'Manager', 20); 

Das ist, was ich habe zur Zeit für eine Abfrage:

SELECT emp_lname, COUNT(emp_no) "No_of_Employees" 
FROM Employee 
WHERE job_title = ('Manager', 'President') 
    AND emp_mgr_emp_no IS NOT NULL 
GROUP BY emp_lname 

die so etwas wie dies gibt:

EMP_LNAME    No_of_Employees 
Blake     1 
Clark     1 
Jones     1 

Wie würde ich es ändern, um die Anzahl der Mitarbeiter für jeden Manager aufzulisten (einschließlich des Präsidenten, der die 3 Manager verwaltet).

Antwort

0

Verwenden Sie verschachtelte Abfragen, um eine Liste der von diesem bestimmten Mitarbeiter verwalteten Mitarbeiter zu erhalten und die Anzahl der Datensätze zu zählen.

SELECT emp_lname, sum(select count(emp_no) FROM Employee B WHERE B.Emp_Mgr_Emp_No = A.emp_no) AS 'Count' FROM Employee A 

So etwas sollte

+0

Arbeit, die einen fehlenden Ausdruck Fehler gibt. –

+0

Funktioniert gut für mich. Fügen Sie hier Ihre CREATE-Anweisungen und INSERT-Anweisungen ein, wenn Sie mich verifizieren möchten, aber es sollte funktionieren –

Verwandte Themen