ql语句 面试题
自动编号 学号 姓名 课程编号 课程名称 分数
1 2005001 张三 0001 数学 69
2 2005002 李四 0001 数学 89
3 2005001 张三 0001 数学 69
4 2005001 张三 0003 语文 80
(1) 查询数学分数在表中第10名到第15名的学生信息
(2) 用一条SQL语句 查询出每门课都大于80分的学生姓名
满意答案
/8-)P☆Z☆L 12级 2012-05-04
第一题是,用双top结构就可以查出来
1,select * from 学生表 where 学号 in
(select top 5 学号 from 成绩表 where 学号 not in(select top 10 学号 from 成绩表 order by 分数) order by 分数)
第二题是比较简单,用复合函数就行了,having
select 姓名 from 成绩表 group by 姓名 having avg(分数)>80
采纳吧~
提问者
的感言:
打那么多不容,只能选两个答案,我也没试,应该是对的
2012-09-05
其他回答(5)
select top 5 * from (select top 15 * from table order by 分数 where 课程名称=数学 desc )t order by t.分数
select t.姓名 from (select 姓名,min(分数) as 最小 from cjb group by 姓名 having min(分数)>85)t
芳 2级 2012-05-07
(1)
sql server数据库:
select top 5 * from 表名 where 课程名称="数学" not in
( select top 5*2 * from 表名 where 课程名称="数学" order by 分数 desc);
5*2的意思:5乘(要查询的页数-1)
Oracle 数据库:
select * from (select rownum r, * from 表名 where 课程名称="数学" and r between (pageIndex-1)*5 and pageIndex*5 order by 分数 desc);
pageIndex的意思:要查询的页数,这里pagIndex是3
(2)select 姓名 from 表名 where 学号="..." and 分数>80 ;
(条件有学号,因为一个学生他有几门课的成绩)
随风 3级 2012-05-07
第一题
如果是sql2005以上版本的可以用,sql2000不支持
select top 4 * from dbo.teacher order by t_salary desc
except
select top 1 * from dbo.teacher order by t_salary desc
如果是sql2000可以用
select top 3 * from (select top 4 * from 学生表 order by 分数 desc) a order by 分数
-
补充:
-
1.select top5 * from table where 学号 not in(select top10 学号 form table order by 分数where 课程=‘数学’desc) order by 分数
2.select 姓名 from table where 学号 not in(select 学号 from table where 分数<=80)
1) select top 6 * from table where id in( select top 15 id from table where 课程名称=‘数学’ order by 分数 desc) order by 分数 ASC
2) select 姓名 from table group by 姓名 having avg(分数)>80