1.计算每个人的总成绩并排名
select name,sum(
score) as all
score from stu
score group by name order by all
score 2.计算每个人的总成绩并排名
select distinct t1.name,t1.stuid,t2.all
score from stu
score t1,( select stuid,sum(
score) as all
score from stu
score group by stuid)t2where t1.stuid=t2.stuidorder by t2.all
score desc
3. 计算每个人单科的最高成绩
select t1.stuid,t1.name,t1.subject,t1.
score from stu
score t1,(select stuid,max(
score) as max
score from stu
score group by stuid) t2where t1.stuid=t2.stuid and t1.
score=t2.max
score 4.计算每个人的平均成绩 @H_301_7@
@H_
301_7@select distinct t1.stuid,t2.avg
score from stu
score t1,avg(
score) as avg
score from stu
score group by stuid) t2where t1.stuid=t2.stuid
5.列出各门课程成绩最好的学生 @H_301_7@
@H_
301_7@select t1.stuid,t2.max
score from stu
score t1,(select subject,max(
score) as max
score from stu
score group by subject) t2where t1.subject=t2.subject and t1.
score=t2.max
score @H_
301_7@
6.列出各门课程成绩最好的两位学生 @H_301_7@
@H_
301_7@select distinct t1.* from stu
score t1 where t1.id in (select top 2 stu
score.id from stu
score where subject = t1.subject order by
score desc) order by t1.subject
7.学号 姓名 语文 数学 英语 总分 平均分
select stuid as 学号,name as 姓名,sum(case when subject='语文' then
score else 0 end) as 语文,sum(case when subject='数学' then
score else 0 end) as 数学,sum(case when subject='英语' then
score else 0 end) as 英语,sum(
score) as 总分,(sum(
score)/count(*)) as 平均分from stu
scoregroup by stuid,name order by 总分desc
8.列出各门课程的平均成绩
select subject,avg(
score) as avg
score from stu
scoregroup by subject
9.列出数学成绩的排名
declare @tmp table(pm int,name varchar(50),
score int,stuid int)insert into @tmp select null,name,
score,stuid from stu
score where subject='数学' order by
score descdeclare @id intset @id=0;update @tmp set @id=@id+1,pm=@idselect * from @tmp select DENSE_RANK () OVER(order by
score desc) as row,subject,stuid from stu
score where subject='数学'order by
score desc
10. 列出数学成绩在2-3名的学生
select t3.* from(select top 2 t2.* from (select top 3 name,stuid from stu
score where subject='数学'order by
score desc) t2 order by t2.
score) t3 order by t3.
score desc
11. 求出李四的数学成绩的排名
declare @tmp table(pm int,pm=@idselect * from @tmp where name='李四'
12. 课程 不及格(-59) 良(-80) 优(-100) @H_301_7@
@H_
301_7@select subject,(select count(*) from stu
score where
score<60 and subject=t1.subject) as 不及格,(select count(*) from stuscore where score between 60 and 80 and subject=t1.subject) as 良,(select count(*) from stuscore where score >80 and subject=t1.subject) as 优from stu
score t1 group by subject
13. 数学:张三(50分),李四(90分),王五(90分),赵六(76分) @H_301_7@
@H_
301_7@declare @s varchar(1000)set @s=''select @s =@s+','+name+'('+convert(varchar(10),
score)+'分)' from stu
score where subject='数学' set @s=stuff(@s,1,'')print '数学:'+@s