子查询

学生成绩表:
      姓名:name    课程:subject      分数:score        学号:stuid
      张三               数学              89                  1
      张三               语文              80                  1
      张三               英语              70                  1
      李四               数学              90                  2
      李四               语文              70                  2
      李四               英语              80                  2


问题:

1.计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)

select [name],sum(score) 总分 from info  group by [name] order by sum(score) desc
2.计算每个人的总成绩并排名(要求显示字段: 学号,姓名,总成绩)
select id,[name],sum(score) 总分 from info  group by [name],id order by sum(score) desc
3.计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩)
select id,[name],subject,max(score) 最高成绩 from info group by id,[name],subject
having max(score) in (select max(score) from info group by id)
4.计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩)
select id,[name],avg(score) from info group by id,[name]
having avg(score) in (select avg(score) from info group by [name])
5.列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩)

6.列出各门课程成绩最好的两位学生(要求显示字段: 学号,姓名,科目,成绩)

7.统计如下:
      学号 姓名 语文 数学 英语 总分 平均分
select id,
姓名=isnull(min(case when id=info.id then [name] end),0),
语文=isnull(min(case when subject='语文' then score end),0),
数学=isnull(min(case when subject='数学' then score end),0),
英语=isnull(min(case when subject='英语' then score end),0),
总分=sum(score),
平均分=avg(score)
from info group by id
8.列出各门课程的平均成绩(要求显示字段:课程,平均成绩)
select subject,avg(score) 平均分 from info group by subject
9.列出数学成绩的排名(要求显示字段:学号,姓名,成绩,排名)

10.列出数学成绩在2-3名的学生(要求显示字段:学号,姓名,科目,成绩)

11.求出李四的数学成绩的排名

12.统计如下:
      课程不及格(0-59)个良(60-80)个优(81-100)个

13.统计如下:
      数学:张三(50分),李四(90分),王五(90分),赵六(76分)

posted on 2010-08-02 12:52  饶兴  阅读(165)  评论(0编辑  收藏  举报

导航