根据平均值获取每个人上下显示的列

时间:2014-02-28 20:59:47

标签: sql oracle

如果他的工资高于所有员工的平均工资,我就会显示“显示EMPLOYEE_NAME,DEPARTMENT_NAME&”字段“上方”;“低于”是他的工资低于平均水平。

SELECT EMPLOYEE_NAME,DEPARTMENT_ID

(CASE
WHEN (SALARY>=(SELECT AVG(SALARY)FROM HR.EMPLOYEES)) THEN 'ABOVE'
ELSE 'BELOW'
END) "SALARY STATUS"
FROM HR.EMPLOYEES;

但是现在我希望得到与字段相同的结果,上面和下面说,但是基于他所在部门所有员工的平均工资。有近14个部门。我被困在这里,可以请任何人帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

SELECT EMPLOYEE_NAME,DEPARTMENT_ID
    (CASE
        WHEN (SALARY>=(SELECT AVG(B.SALARY)FROM HR.EMPLOYEES AS B WHERE A.DEPARTMENT_ID = B.DEPARTMENT_ID))
        THEN 'ABOVE'
        ELSE 'BELOW'
    END)
"SALARY STATUS"
FROM HR.EMPLOYEES AS A;