2013-04-08 10 views
12

Jestem nowy w sql, każda pomoc jest doceniana.sprzężenie wewnętrzne z grupą według wyrażenia w Oracle sql

Mam dwie tabele, employees i jobs. employees zawierają zmienną job_id (wielu pracowników może mieć ten sam identyfikator job_ID). jobs zawierają zmienne job_id i job_title (jeden identyfikator job_ID odpowiada jednemu job_title, jest to hr schematu w Oracle, jeśli jesteś zainteresowany).

Chcę, aby zapytanie powróciło: job_title, job_ID i liczba osób, które mają to samo job_Id.

Próbowałem następujący kod:

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 

komunikat o błędzie jest:

ORA-00979: nie GROUP BY ekspresji 00979. 00000 - "nie GROUP BY wyrażenia" * Przyczyna:
* Działanie:
błąd w wierszu: 83 Kolumna: 8

Czy możesz mi pomóc to rozwiązać?

Odpowiedz

21

Komunikat o błędzie jest nieco mylący. Gdy masz select garść pól i agregatu, musisz group by każde pole, które ty select i tylko pola, które ty select. Twoje zapytanie musi być:

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.jobtitle 
+0

Dziękuję, dziękuję! – Cici

Powiązane problemy