LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1477|回复: 4

sql语句疑问求助

[复制链接]
发表于 2006-7-22 09:37:25 | 显示全部楼层 |阅读模式
[color="Red"]select * from emp

EMPNO DEPTNO  SAL         ENAME
----- ------            ----------- -----
1     A                  500       tom
2     B                  600       mary
3     C                 400        jack
4     A                 450        tim
5     B                 700        cici
6     A                 500        julie

deptno是指部门。下面命令是每个部门的平均工资:

[color="red"]select deptno,avg(sal)  asal from emp group by deptno

DEPTNO  ASAL
------      -----------
A              483
B              650
C              400


现在我想查询在每个部门内高与平均工资的员工:

[color="red"]select * from emp A where A.sal > (select avg(B.sal) from emp B where B.deptno=A.deptno group by deptno)

为什么要加上“B.deptno=A.deptno ” ?

谢谢
发表于 2006-7-22 10:36:31 | 显示全部楼层
当然要拉
要保证 sal 的比较是在同一个部门里的进行的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-22 12:03:21 | 显示全部楼层
关键是如何计算出每个部门的平均工资然后本部门的员工进行比较。

B.deptno=A.deptno   ,这个就是实现上述要求的?

还请指点
回复 支持 反对

使用道具 举报

发表于 2006-7-24 09:54:50 | 显示全部楼层
应该属于关联子查询的范畴
两个不联系起来,b.deptno=a.deptno用途是让内查询和外查询的记录有一个联系
不然的话不就类似迪卡尔积的情况了吗?
任何记录都相互比较
回复 支持 反对

使用道具 举报

发表于 2006-8-10 18:19:02 | 显示全部楼层
楼上正解阿,感觉语句写的别扭..
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表