给定一个包含City,EmpName和Salary的列表,按城市和EmpName排序,如何输出每个EmpName和Salary以及每个城市的总薪水?
这是我所拥有的:
按省份从表格组中选择EmpName,sum(Salary);
但它给了我错误,因为我没有在group by子句中包含EmpName和/或我没有对它执行任何聚合。我怎样才能达到预期的效果?有帮助吗?
答案 0 :(得分:1)
如果您想要的是每个员工在城市中的工资总和,那么您有两种选择。第一个应该适用于几乎所有数据库:
select EmpName, tcity.CitySalary
from t join
(select City, sum(Salary) as CitySalary
from t
group by city
) tcity
on tcity.city = t.city
第二种方法是使用窗口功能。值得注意的是,这不适用于mysql:
select EmptName, sum(salary) over (partition by city)
from t
答案 1 :(得分:0)
SELECT t.City, t.EmpName, t.Salary, x.city_salary
FROM table t,
(SELECT City, SUM(Salary) as city_salary
FROM table
GROUP BY City) x
WHERE x.city = t.city;