[已解决]一个简单的SQL查询语句
小弟是SQL初学者,在做实验时遇到了一点点小小的困难,请大家热心帮助一下,如果你认为我是为了完成作业而把题目发上来的话,你完全可以不理会。用到的数据表我贴上来了,分别是 person表和salary表
用SQL语句进行查询发放奖金(bonus)平均数大于200元的部门(Deptname),并从高到低排序。
我只会写一点 select Deptname from person,salary
where avg() -- 这句我不会写。。。
order by desc
person 表
P_no P_name sex BirthDate Date_hired Deptname P_boss
000001 林峰 男 1973-04-07 00:00:00.000 2003-08-03 00:00:00.000 销售部 000007
000002 谢志文 男 1975-02-14 00:00:00.000 2003-12-07 00:00:00.000 培训部 000005
000003 李浩然 男 1970-08-25 00:00:00.000 2000-05-16 00:00:00.000 销售部 000007
000004 廖小铃 女 1979-08-06 00:00:00.000 2004-05-06 00:00:00.000 培训部 000005
000005 梁玉琼 女 1970-08-25 00:00:00.000 2001-03-13 00:00:00.000 培训部 NULL
000006 罗向东 男 1979-05-11 00:00:00.000 2000-07-09 00:00:00.000 销售部 000007
000007 肖家庆 男 1963-07-14 00:00:00.000 1998-06-06 00:00:00.000 销售部 NULL
000008 李浩然 男 1975-01-30 00:00:00.000 2002-04-12 00:00:00.000 培训部 000005
000009 赵文龙 男 1969-04-20 00:00:00.000 1996-08-12 00:00:00.000 销售部 000007
salary 表
P_no base bonus fact
000001 2100 75 2175
000002 1800 300 2100
000003 2800 280 3080
000004 2500 250 2750
000005 2300 275 2575
000006 1750 130 1880
000007 2400 210 2610
000008 1800 235 2035
000009 2150 210 2360
[[it] 本帖最后由 布拉莫斯 于 2008-4-16 18:55 编辑 [/it]]
having avg(bonus)>200
group by deptname
order by avg(bonus) desc
回复 2# 的帖子
谢谢你的帮助,但是,好像问题还没有解决,运行你写的脚本,有如下的错误
服务器: 消息 156,级别 15,状态 1,行 3
在关键字 'group' 附近有语法错误。
我想 应该是那个 ‘having’ 那错了。。 select deptname,avg(bonus) from person,salary
group by deptname
having avg(bonus)>200
order by avg(bonus) desc
回复 4# 的帖子
谢谢你的帮助,我认真看了你写的脚本,并运行,得到的结果如下deptname (无列名)
培训部 243.333333
销售部 243.333333
为了验证上面的结果,我手工计算了两个部门的平均奖金,得到的结果为
培训部 256.0
销售部 226.0
所以你的结果有点碰巧,为了弄清楚为什么你的结果不对,我修改成这样。
select deptname,avg(bonus),count(bonus) from person,salary
group by deptname
having avg(bonus)>200
order by avg(bonus) desc
结果count(bonus)的值分别为 36 45
说明person 表与 salary 表的P_no 没有对应起来。我想,如果只涉及一个表,版主你的答案应该是对的。
所以我加了一个where语句
变成这样
select deptname,avg(bonus) from person,salary
where person.P_no=salary.P_no
group by deptname
having avg(bonus)>200
order by avg(bonus) desc
结果就正确了。(我认为是这样)
谢谢版主的帮助。。。。
[[it] 本帖最后由 布拉莫斯 于 2008-4-16 18:56 编辑 [/it]]
页:
[1]
