一道sql 的面试题
表结构:
• 成绩表(Grade),包含字段:GradeID(Int,自增), SNO(int, 学号), CNO(int, 课程号), Score(float,分数)
查询每门课程的平均(最高/最低)分及课程号;
select avg(score) ,cno from [DBTest].[dbo].[grade] group by cno
select max(score) ,cno from [DBTest].[dbo].[grade] group by cno
select min(score) ,cno from [DBTest].[dbo].[grade] group by cno
查询每门课程第1名的学生的学号;
select sno from [DBTest].[dbo].[grade] as A
where sno in
(
select top 1 sno from [DBTest].[dbo].[grade] as B where B.cno=A.cno order by score desc
)
查询每门课程中超过平均分的所有学生的学号等等。
select * from [DBTest].[dbo].[grade] as A
where score >
(
select avg(score) from [DBTest].[dbo].[grade]as C where c.cno=a.cno
)
即使是骗,也要勤学苦练。