web-dev-qa-db-fra.com

jointure interne avec groupe par expression dans Oracle sql

Je suis nouveau sur sql, toute aide est appréciée.

J'ai deux tables, employees et jobs. employees contient une variable job_id (plusieurs employés peuvent avoir le même ID_travail). jobs contient des variables job_id et job_title (un job_ID correspond à un job_title, c'est le schéma hr d'Oracle si vous êtes intéressé).

Je veux que la requête renvoie: le job_title, job_ID et le nombre de personnes qui ont le même job_Id.

J'ai essayé le code suivant:

select j.job_title, e.job_ID, count(e.job_ID)
from employees e, jobs j
where e.job_id=j.job_id
group by e.job_Id

le message d'erreur est:

ORA-00979: pas une expression GROUP BY 00979. 00000 - "pas une expression GROUP BY" * Cause:
*Action:
Erreur à la ligne: 83 Colonne: 8

Pouvez-vous m'aider à résoudre ce problème?

15
Cici

Le message d'erreur est un peu trompeur. Lorsque vous select un tas de champs et un agrégat, vous devez group by tous les champs que vous select et uniquement les champs que vous select. Votre requête doit donc être:

select j.job_title, e.job_ID, count(e.job_ID)
from employees e, jobs j
where e.job_id=j.job_id
group by e.job_Id, j.job_title
27
Dan Bracuk