給定一個包含City,EmpName和Salary的列表,按城市和EmpName排序,如何將每個EmpName和Salary輸出爲每個城市的總工資?如何在結果集中包含列而不將其包含在group by子句中或對其執行任何聚合?
以下是我有:
選擇EmpName,從全省表組總和(工資);
但它給了我錯誤,因爲我沒有在group by子句中包含EmpName和/或沒有對它執行任何聚合。我怎樣才能達到預期的效果?任何幫助?
給定一個包含City,EmpName和Salary的列表,按城市和EmpName排序,如何將每個EmpName和Salary輸出爲每個城市的總工資?如何在結果集中包含列而不將其包含在group by子句中或對其執行任何聚合?
以下是我有:
選擇EmpName,從全省表組總和(工資);
但它給了我錯誤,因爲我沒有在group by子句中包含EmpName和/或沒有對它執行任何聚合。我怎樣才能達到預期的效果?任何幫助?
如果你想要的是每個員工的城市工資總和,那麼你有兩個選擇。首先應該在幾乎任何數據庫工作:
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
如果您的RDBMS支持,窗口函數確實可以到這裏。 – cairnz
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;
改變選擇爲 「選擇省,SUM(工資)」。 –
但我還需要顯示EmpName以及 –
請參閱下面的答案: –