2016-10-15 1 views
-2
SELECT manager_id, COUNT(manager_id) 
FROM employees 
GROUP BY manager_id 
HAVING COUNT(manager_id) > 3 

habe ich kein Problem mit dem Code, aber, ich möchte jedoch den Manager angezeigt wird Vornamen und Nachnamen anstelle des manager_id, wenn ich das tue, ich den Fehler: "column 'employees.first_name' ist ungültig ... nicht in einer Aggregatfunktion oder einer group by-Klausel enthalten". Ich habe versucht, first_name und last_name der Gruppe hinzuzufügen, indem die Ausgabe leer ist. Versucht, sich selbst beizutreten .. kann die Antwort nicht herausfinden. Die Abfrage enthält: employee_id, vornamen, nachnamen, MANAGER_IDSQL mit select mit Gruppe von

Die Abfrage oben zeigt:

manager_id (No column name) 
100 14 
120 8 
121 8 
122 8 
123 8 
124 8 
145 6 
146 6 
147 6 
148 6 
149 6 

Ich mag:

first_name last_name 

Bob  Smith 
+0

Ich nehme an, es gibt irgendwo einen Manager-Tisch? –

+0

Zeigen Sie uns die Abfrage, die Sie versucht haben, die fehlschlägt. – artm

+0

Ich nehme an, Sie verwenden 'sql server' und nicht' mysql'. So oder so zeigen Sie bitte Beispieldaten und erwartete Ergebnisse an. – sgeddes

Antwort

2
SELECT ISNULL(m.name, 'None') AS ManagerName, COUNT(1) 
    FROM employees e 
    LEFT JOIN employees m 
    on e.manager_id = e.employee_id 
    GROUP BY ISNULL(m.name, 'None') 
    HAVING COUNT(1) > 3 

Hinweis count (1) ist das gleiche wie Graf (*), aber etwas weniger Arbeit auf dem Server.

+0

'count (1) ist das gleiche wie count (*) aber etwas weniger Arbeit auf dem Server' Irgendwelche Hinweise darauf? – Squirrel

+0

@Squirrel, ich habe gegoogelt und es sieht so aus, als wäre der Unterschied weg optimiert worden - in der Vergangenheit würde es eine Reise in den Spalten-Tisch sparen. – JBrooks