免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2562 | 回复: 7
打印 上一主题 下一主题

部门内平均工资查询 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-21 14:16 |只看该作者 |倒序浏览
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是指部门。下面命令是每个部门的平均工资:

select deptno,avg(sal)  asal from emp group by deptno

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


现在我想查询在每个部门内高与平均工资的员工,应该如何实现



谢谢
leion 该用户已被删除
2 [报告]
发表于 2006-07-21 14:50 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2006-07-21 17:25 |只看该作者
原帖由 leion 于 2006-7-21 14:50 发表
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

论坛徽章:
0
4 [报告]
发表于 2006-07-22 19:58 |只看该作者

回复 1楼 soccer 的帖子

-- 使用SAMPLE数据库的EMPLOYEE表作示例

-- 创建视图,简化SQL
create view emp as
(
        select empno, salary, workdept
        from employee
) ;


-- 第一个SQL最常见的方式,将平均制作个临时表
with avg(dept, avgsa) as
(
        select workdept,avg(salary)
        from employee
        group by workdept
)

select empno, salary, firstnme
from employee e , avg a
where e.salary > a.avgsa and e.workdept = a.dept ;

-- 第二个SQL, 使用OLAP分析

with avg as
(
        select empno, salary, firstnme, avg(salary) over(partition by workdept) avgsa
        from employee
)

select *
from avg
where salary > avgsa ;

-- 第三个SQL, 前面的示例方式

select *
from emp a
where a.salary >
(
        select avg(b.salary) from emp b
        where b.workdept = a.workdept
        group by workdept
) ;

Summary of Results
==================
                Elapsed             Agent CPU         Rows      Rows
Statement #     Time (s)            Time (s)          Fetched   Printed
1                     0.000       Not Collected        16        16
2                     0.125       Not Collected        16        16
3                     0.031       Not Collected        16        16

看来第一个的效率比较高
leion 该用户已被删除
5 [报告]
发表于 2006-07-24 11:05 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
leion 该用户已被删除
6 [报告]
发表于 2006-07-24 11:18 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
leion 该用户已被删除
7 [报告]
发表于 2006-07-24 11:19 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2006-07-28 09:41 |只看该作者
红色部分是不能省略的。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP