2017-02-01 5 views
0

Zeigen Sie die Abteilungs-ID, das durchschnittliche Gehalt (im Währungsformat) und die Anzahl der Job-IDs für jede Abteilung an. Beschränken Sie die Ergebnisse auf nur die Abteilungen mit mehr als 5 Job-IDs.Arbeiten mit avg, to_char und

Was ich bisher versucht habe.

wählen department_id, to_char (avg (Gehalt, '$ 999,999.00')), count (job_id) von Mitarbeitern Gruppe von department_id, Gehalt, JOB_ID SUM (job_id) mit> '5';

Ich habe Probleme zu verstehen, was es bedeutet "ungültige Anzahl von Argumenten."

enter image description here

Antwort

0

Nur department_id sollte in der GROUP BY Klausel erscheinen, da Sie Abteilungen aggregieren wollen über, und nichts anderes.

SELECT department_id, 
     CONCAT('$', FORMAT(AVG(salary), 2)) AS avg_salary, 
     COUNT(*) AS num_job_ids 
FROM employees 
GROUP BY department_id 
HAVING COUNT(*) > 5 

Ich nahm in meiner Antwort, die jeder job_id in der Tabelle eindeutig ist. Wenn dies nicht der Fall ist und Sie stattdessen eindeutige Jobs zählen/melden möchten, können Sie COUNT(*) durch COUNT(DISTINCT job_id) ersetzen.