SQL问题与我的查询

时间:2016-04-23 14:41:57

标签: sql

我的查询存在问题,该问题适用于以下问题:

+---------------------------+
| ID NAME SALARY DEPARTMENT |
+---------------------------+
| 1 John 100 Accounting     |
| 2 Mary 200 IT             |
+---------------------------+

我想要实现的是找到查询,这将产生以下结果:

对于每位员工,找到那些薪水比雇员的工资高100多或少100的雇员的平均工资,并且他们在同一个部门工作。

到目前为止,我有这个:

SELECT E1.ID, AVG(E2.SALARY) FROM E1 EMP, E2 EMP
WHERE ABS(E1.SALARY-E2.SALARY)<= 100 AND E1.DEPARTMENT = E2.DEPARTMENT
GROUP BY E1.NAME

这是对的吗?

1 个答案:

答案 0 :(得分:2)

您最好使用显式连接语法:

SELECT E1.ID, AVG(E2.SALARY) 
FROM EMP E1
JOIN EMP E2 
   ON E1.ID <> E2.ID AND 
      E1.DEPARTMENT = E2.DEPARTMENT AND
      ABS(E1.SALARY - E2.SALARY) <= 100 
GROUP BY E1.ID

如果您不希望在平均计算中包含同一员工的薪水,则必须使用谓词E1.ID <> E2.ID