子查询
学生成绩表:
姓名: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分)