注册 登录
编程论坛 SQL Server论坛

一道查询题

快乐小小 发布于 2007-04-22 13:45, 547 次点击
老师布置了一道题:显示所有平均工资低于全部职工工资的职工的职工号和姓名.下面是我做的:
select 职工号,姓名
from salary
where 工资 in
(select 职工号,avg(工资)
from salary
group by 职工号
where avg(工资)<(select avg(工资)from salary)
)
当然我做的是错的,希望大家帮我改正改正,把这道题解决了.
附:我知道自己编的东西哪里出错了,但就是编不出成功啊.还有每个职工不止一次工资,希望大家明白我的意思,谢谢了!
5 回复
#2
棉花糖ONE2007-04-22 16:06
工资 in
(select 职工号,avg(工资) //in前后的个数不一致

where avg(工资)  //聚合函数不能直接在where后使用,聚合函数的执行是在group by之后

sql语句的执行流程是,from->where->group by->聚合函数->having->order by->top->distinct->select
#3
快乐小小2007-04-22 17:12

那这道题该怎样编呢?我实在不会啊!最郁闷的是自己知道自己错在哪儿,却没办法改正.

#4
hustcmd2007-04-23 22:06
select 职工号,姓名
from salary
where 工资 in
(select 职工号,avg(工资)
from salary
where avg(工资)<(select avg(工资) from salary)
group by 职工号)

这样的么????
#5
cyyu_ryh2007-04-24 11:24
group by 职工号,放在括号外面
#6
快乐小小2007-05-20 21:58
谢谢各位了
1