一条SQL语句::查询工资低于部门平均工资的员工的姓名和工资!帮帮忙!在线等

gongzhengwei 2008-04-15 08:39:22
员工表emp(id,name,dept_id,salary,) 部门表dept(id,name)

查询工资低于部门平均工资的员工的姓名和工资
...全文
6531 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhrwty122886 2011-06-01
  • 打赏
  • 举报
回复
select e.name,salary,avg(salary)
from emp e,dept d
where e.dept_id=d.id
group by e.dept_id
having salary<avg(salary)
lxdhdgss 2009-12-14
  • 打赏
  • 举报
回复
14楼的非常正确
peacexiazhu 2009-09-16
  • 打赏
  • 举报
回复
让我看看
  • 打赏
  • 举报
回复
WITH B AS (SELECT avg(salary) as salary,dept_id FROM emp GROUP BY dept_id)
SELECT A.id,A.name
FROM emp A,B
WHERE A.dept_id=B.dept_id
AND A.salary<B.salary;
thunderclap 2008-05-29
  • 打赏
  • 举报
回复

select e1.name, e1.salary
from emp e1
where e1.salary < (select avg(e2.salary)
from emp e2
where e2.dept = e1.dept)


这样效率高一点
thunderclap 2008-05-29
  • 打赏
  • 举报
回复
员工表emp(id,name,dept_id,salary,) 部门表dept(id,name)
查询工资低于部门平均工资的员工的姓名和工资


select e1.name, e1.salary
from emp e1
where e1.salary < (select avg(e2.salary)
from emp e2
group by e2.dept
having e2.dept = e1.dept)
8193102 2008-05-28
  • 打赏
  • 举报
回复
各有各的招,招招见效就行
wj6625 2008-05-22
  • 打赏
  • 举报
回复
学习到了~
xdyy_2006 2008-05-16
  • 打赏
  • 举报
回复
jf
xudaqing2008 2008-05-15
  • 打赏
  • 举报
回复
不过论效率,还是7楼的高啊!
xudaqing2008 2008-05-15
  • 打赏
  • 举报
回复
SELECT A.*
FROM EMP A,
(
select DEPT_ID,avg(SALARY) SALARY
from EMP
group by DEPT_ID
) B
WHERE A.DEPT_ID = B.DEPT_ID AND A.SALARY < B.SALARY
yxiaowang 2008-05-15
  • 打赏
  • 举报
回复 1
select * from
(select a.name,a.salary,avg(a.salary) over (PARTITION BY dept_id) as Average from emp a)
where salary < Average

教科书写法应该是这样!!!
raoxy1982 2008-05-15
  • 打赏
  • 举报
回复 1

select a.*,b.salary as avg_salary from emp a,(
select dept_id,avg(salary) salary
from emp
group by dept_id) as b
where a.dept_id=b.dept_id and a.salary<b.salary
又是违规昵称 2008-05-15
  • 打赏
  • 举报
回复
效率的高低,没有分析过数据库的情况,单凭sql能下结论吗
jxwuyuanyong 2008-05-09
  • 打赏
  • 举报
回复
select a.name, a.salary from emp a where salary<(select avg(salary) from emp where a.dept_id=dept_id group by dept_id);
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
这个简单啊,网上搜一下就得到答案了.
HelloWorld_001 2008-04-16
  • 打赏
  • 举报
回复
2人思路是一样的。
但1楼是对的,2楼主要问题是最后的and A.salary > B.avg_salary
还有就是from table a,不能是 as a
fraul 2008-04-15
  • 打赏
  • 举报
回复
select A.name, A.salary from emp as A, (select avg(salary) as avg_salary, dept_id from emp group by dept_id)) as B
where A.dept_id = B.dept_id and A.salary > B.avg_salary
jinjazz 2008-04-15
  • 打赏
  • 举报
回复
WITH B AS (SELECT avg(salary) as salary,dept_id FROM emp GROUP BY dept_id)
SELECT A.id,A.name
FROM emp A,B
WHERE A.dept_id=B.dept_id
AND A.salary<B.salary;

2,667

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 认证与考试
社区管理员
  • 认证与考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧