2012-12-12 71 views
0

我必須讓所有的job_titles的列表,並在那裏工作的人工資的總和......爲什麼這個SQL字符串不工作?

我使用此:

SELECT j.job_title, SUM(e.salary) 
FROM jobs j LEFT JOIN employees e ON e.job_id = j.job_id 
GROUP BY j.job_title; 

OK,但現在我得同一名單還要綜合考慮城市...

它好好嘗試一下工作...:/

SELECT j.job_title, SUM(e.salary), d.department_id, l.city 
FROM departments d LEFT JOIN employees e ON e.department_id = d.department_id LEFT JOIN locations l 
ON l.location_id = d.location_id LEFT JOIN jobs j ON e.job_id = j.job_id 
GROUP BY l.city;  

爲什麼會是什麼?

+0

也許你可以試試'INNER d.department_id所以加入'而不是。 –

回答

0

我認爲你必須要通過組DEPARTMENT_ID和JOB_TITLE也:

GROUP BY j.job_title, d.department_id, l.city; 
0

您可以通過非聚集列需要組;

group by 1, 3, 4 
5

你還需要by子句對組添加這些列:j.job_titled.department_idl.city

SELECT.. 
FROM... 
GROUP BY j.job_title, d.department_id, l.city 

... 
group by job_title, department_id, city 

您也可以使用一組列位置非聚集列必須包含在GROUP BY條款。

+0

你的最後一句話是不是這種情況下 – Bohemian

+1

爲MySQL通常如此,但真正@Bohemian如果你阻止該組的默認行爲BY子句中加入了'ONLY_FULL_GROUP_BY'模式變到你的'SQL_MODE'系統變量這將是真實的。 –

+1

很酷。感謝信息 - 不知道那個標誌。乾杯+1 – Bohemian

0

您可以通過l.city只組,但在您使用j.job_title select語句,以獲取這些值,你必須使用

group by job_title, department_id, city