运用SQL语言解决几个小问题,拜托了

来源:百度知道 编辑:UC知道 时间:2024/06/07 14:20:50
我正在学SQL语言的基础部分,也就是些简单的命令,昨天老师给布置了个题,说是某个公司的面试题,题目如下:
1、找出公司(rich)里收入最高的前三名员工
2、找出表中的第四行的数据
3、找出哪些工资高于他们所在部门的平均工资的员工
4、找出哪些工资高于他们所在部门的manager(经理)的工资的员工
5、找出部门工资排名第二、第三的员工

说实话,好多命令都还不熟悉,不会做啦,希望高手可以帮个忙啊,万分感谢

1:select top 3 * from table_name order by field_name
2:如果没记错应该有一个函数可以取出记录号的,where一下就行了。
3:selecct A.* from 工资表 a join(select 部门代码,AVG(工资) as 平均工资 from 工资表 group by 部门代码)B on a.工资>B.平均工资
4、select A.* from 工资表 a join (select * from 工资表 where 职务=经理)b on a.部门代码=B.部门代码 where a.工资>B.工资
5、这个用一条语句写不也来。说一下方法。
给这张表加一个自增列,要ORDER by 部门,工资.
然后,用MIX(自增列)的GROUP BY部门取出部门中最小的自增值,用一个JOIN把自增的表与这个子查询JOIN ON A.部门=B.部门,WHERE 自增值-MIX(自增列) in (2,3)
第五个写的有点乱,但你要用里自增,自连接,还有MIX函数和GROUP BY才能写出来。等你写出来,就可以看懂我写的是什么了。呵~~~

你应该给出数据库的表结构,这样人家想帮你也没有能力
比如工资表工资是什么名称,员工表头是什么、比如向我这样的
现有数据库结构及数据如下:
学生表(students)
st_id st_name(姓名) sex(性别)
st001 张杰 男
st002 公孙燕飞 男
st003 王楠 女
st004 王伟 男
st005 李燕纹 女
st006 孙武 男

老师表(teachers)
t_id(主键,编号) t_name(姓名) t_lesson(课程)
t001 张老师 数学
t002 李老师 英语

成绩表(results)
r_id r_fenshu(int) r_stid r_tid
r001 90 st001 t002
r002 68 st005 t00