0

给定一个包含 City、EmpName 和 Salary 的列表,按 city 和 EmpName 排序,如何输出每个 EmpName 和 Salary 以及每个城市的总 Salary?

这是我得到的:

按省从表组中选择 EmpName, sum(Salary);

但它给了我错误,因为我没有在 group by 子句中包含 EmpName 和/或没有对其执行任何聚合。我怎样才能达到预期的效果?有什么帮助吗?

4

2 回答 2

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
于 2012-06-04T19:15:51.250 回答
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;
于 2012-06-04T19:19:09.790 回答