SQL经典练习题

From:http://jinl007.spaces.live.com/blog/cns!ea97e38ff8737716!174.entry

 

列出各系的学生数(人数多的排在前面)

1)  Sql语句:select sdept,count(*) as dept_student_number from student

group by sdept order by dept_student_number desc

2)  执行结果:

2)        找出各科成绩均在85分以上(含)的学生的学号、姓名

1)  Sql语句:select sno,sname from student where sno in(select sno from sc group by sno having min(grade)>=85)

2)  执行结果:

3)        找出有三门课程的成绩在75分以下的学生的学号、姓名

1)  Sql语句:select sno,sname from student where sno in(select sno from sc  where grade<75 group by sno having (count(grade) =3 ))

2)  执行结果:

4)        列出数据库成绩的前五名学生的学号、姓名、成绩

1)  Sql语句:select top 5 student.sno,sname,grade from student,sc where student.sno=sc.sno and cno=(select cno from course where cname='数据库') order by grade desc

另解

          From:http://www.programfan.com/club/showtxt.asp?id=207466

 

student(sno,sname,sage,ssex,sdept)
course(cno,cname,credit)
sc(sno,cno,grade)

注明:credit是学分
      student里的sno和course里cno分别sc里的sno和cno的外键

1)找出各科成绩均在85分以上(含)的学生的学号、姓名
2)找出有三门课程的成绩在75分以下的学生的学号、姓名
3)列出数据库成绩的前五名学生的学号、姓名、成绩

1)select distinct b.sno,b.sname
  from sc a inner join student b
  on a.sno=b.sno
  where a.sno not in(select sno from sc where grade<85)
2)select distinct b.sno,b.sname
  from sc a inner join student b
  on a.sno=b.sno
  where a.sno in (select sno from sc where grade<75 group by sno hanving count(grade)=3)

3)select top 5 b.sno,b.sname,a.grade
  from sc a inner join student b
  on a.sno=b.sno
  where a.cno='数据库的课程id'
  order by grade desc

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值