Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的查询中的SQL问题_Sql - Fatal编程技术网

我的查询中的SQL问题

我的查询中的SQL问题,sql,Sql,我对查询有一个问题,该查询操作于以下talble: +---------------------------+ | ID NAME SALARY DEPARTMENT | +---------------------------+ | 1 John 100 Accounting | | 2 Mary 200 IT | +---------------------------+ 我试图实现的是找到查询,这将导致以下结果: 对于每个员工,找到其工资高于或低于给定员工

我对查询有一个问题,该查询操作于以下talble:

+---------------------------+
| ID NAME SALARY DEPARTMENT |
+---------------------------+
| 1 John 100 Accounting     |
| 2 Mary 200 IT             |
+---------------------------+
我试图实现的是找到查询,这将导致以下结果:

对于每个员工,找到其工资高于或低于给定员工工资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
从E1 EMP、E2 EMP中选择E1.ID、平均(E2.SALARY)

其中ABS(E1.SALARY-E2.SALARY)最好使用显式连接语法:

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.SALARY)
来自EMP E1
加入EMP E2
关于E1.ID E2.ID和
E1.部门=E2.部门和

ABS(E1.SALARY-E2.SALARY)最好使用显式连接语法:

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.SALARY)
来自EMP E1
加入EMP E2
关于E1.ID E2.ID和
E1.部门=E2.部门和

ABS(E1.SALARY-E2.SALARY)这两个操作之间有什么绩效差异吗?顺便说一句,谢谢你指出我的错误,把同一个员工的工资包括在内@uksz是的,因为您的查询首先获取员工表的笛卡尔积,然后应用过滤条件。这两个操作之间有性能差异吗?顺便说一句,感谢您指出我关于包含同一员工工资的错误@uksz是的,因为您的查询首先获取employee表的笛卡尔积,然后应用过滤条件。