我必须得到所有job_titles的清单以及在那里工作的人的工资总额......
我得到了这个:
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;
为什么会这样?
答案 0 :(得分: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
子句中。
答案 1 :(得分:0)
我认为你只需按department_id和job_title进行分组:
GROUP BY j.job_title, d.department_id, l.city;
答案 2 :(得分:0)
您需要按非聚合列进行分组;
...
group by job_title, department_id, city
您还可以通过以下方式使用组中的列位置:
group by 1, 3, 4
答案 3 :(得分:0)
你只是l.city组,但在select语句中你使用j.job_title,d.department_id所以为了获取这些值你必须使用
group by job_title, department_id, city