You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询员工姓名、工资及平均工资时所有员工均值相同,如何修正?

解决方案

你当前的子查询(SELECT AVG(Salary) FROM Employee)是计算整个Employee表的全局平均工资,所以所有员工记录返回的平均值完全一致。如果要为每位员工计算其对应分组(比如所在部门)的平均工资,可采用以下两种方法:

方法1:使用窗口函数(推荐)

窗口函数可以高效地按指定维度分组计算聚合值,无需额外关联。假设员工表中有部门字段Dno,示例代码如下:

SELECT 
    Fname AS EmployeeFirstName, 
    Lname AS EmployeeLastName, 
    Salary AS Sal, 
    AVG(Salary) OVER (PARTITION BY Dno) AS DepartmentAverageSalary
FROM 
    Employee;

PARTITION BY Dno会将员工按部门分组,自动为每个组内的员工计算该部门的平均工资,每条记录将显示对应员工所在部门的平均值。

方法2:使用关联子查询

如果你的数据库版本不支持窗口函数,可通过关联子查询匹配当前员工的分组维度,计算对应分组的平均工资:

SELECT 
    e.Fname AS EmployeeFirstName, 
    e.Lname AS EmployeeLastName, 
    e.Salary AS Sal, 
    (SELECT AVG(Salary) FROM Employee WHERE Dno = e.Dno) AS DepartmentAverageSalary
FROM 
    Employee e;

子查询通过Dno = e.Dno关联外部表,仅计算当前员工所在部门的平均工资,确保每条记录返回对应分组的平均值。

注意

如果你的“对应的平均工资”不是按部门,而是其他维度(如职位、入职年份等),只需将PARTITION BY或关联条件中的Dno替换为对应的分组字段即可。

内容的提问来源于stack exchange,提问作者user23487546

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:57:06