0

我必须得到一份所有工作职位的清单以及在那里工作的人的工资总和......

我用这个得到了:

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;

好的,但现在我必须得到相同的清单,但还要考虑到城市......

它不起作用...:/

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;     

为什么会这样?

4

4 回答 4

5

您还需要在 group by 子句中添加这些列:j.job_title, d.department_id,l.city

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

GROUP BY子句中必须包含非聚合列。

于 2012-12-12T23:12:09.063 回答
0

我认为你只需要按部门 ID 和工作标题分组:

GROUP BY j.job_title, d.department_id, l.city;
于 2012-12-12T23:11:43.383 回答
0

您需要按非聚合列分组;

...
group by job_title, department_id, city

您还可以通过以下方式使用组中的列位置:

group by 1, 3, 4
于 2012-12-12T23:12:07.327 回答
0

您仅按 l.city 分组,但在 select 语句中您使用的是 j.job_title, d.department_id 所以为了获取这些值,您必须使用

group by job_title, department_id, city
于 2012-12-12T23:14:39.837 回答