学生成绩表(stuscore):

姓名:name

课程:subject

分数:score

学号:stuid

张三

数学

89

1

张三

语文

80

1

张三

英语

70

1

李四

数学

90

2

李四

语文

70

2

李四

英语

80

2

a4c26d1e5885305701be709a3d33442f.png创建表

a4c26d1e5885305701be709a3d33442f.png

问题:

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

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

3. 计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩)

4. 计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩)

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

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

7. 统计如下:

学号

姓名

语文

数学

英语

总分

平均分

8.列出各门课程的平均成绩(要求显示字段:课程,平均成绩)

9.列出数学成绩的排名(要求显示字段:学号,姓名,成绩,排名)

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

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

12.统计如下:

课程

不及格(0-59)个

良(60-80)个

优(81-100)个

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

答案:

1. 计算每个人的总成绩并排名

a4c26d1e5885305701be709a3d33442f.pngselect name,sum(score) as allscore from stuscore group by name order by allscore

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

2. 计算每个人的总成绩并排名

a4c26d1e5885305701be709a3d33442f.pngselect distinct t1.name,t1.stuid,t2.allscore from stuscore t1,

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png(

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png select stuid,sum(score) as allscore from stuscore group by stuid

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png)t2

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngwhere t1.stuid=t2.stuid

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngorder by t2.allscore desc

a4c26d1e5885305701be709a3d33442f.png

3. 计算每个人单科的最高成绩

a4c26d1e5885305701be709a3d33442f.png select t1.stuid,t1.name,t1.subject,t1.score from stuscore t1,

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png(

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngselect stuid,max(score) as maxscore from stuscore group by stuid

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png) t2

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngwhere t1.stuid=t2.stuid and t1.score=t2.maxscore

a4c26d1e5885305701be709a3d33442f.png

4.计算每个人的平均成绩

a4c26d1e5885305701be709a3d33442f.pngselect distinct t1.stuid,t1.name,t2.avgscore from stuscore t1,

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png(

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngselect stuid,avg(score) as avgscore from stuscore group by stuid

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png) t2

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngwhere t1.stuid=t2.stuid

a4c26d1e5885305701be709a3d33442f.png

5.列出各门课程成绩最好的学生

a4c26d1e5885305701be709a3d33442f.pngselect t1.stuid,t1.name,t1.subject,t2.maxscore from stuscore t1,

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png(

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngselect subject,max(score) as maxscore from stuscore group by subject

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png) t2

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngwhere t1.subject=t2.subject and t1.score=t2.maxscore

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

6.列出各门课程成绩最好的两位学生

a4c26d1e5885305701be709a3d33442f.pngselect distinct t1.* from stuscore t1 a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngwhere t1.stuid in a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png(select top 2 stuscore.stuid from stuscore where subject = t1.subject order by score desc) a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngorder by t1.subject

7.学号 姓名 语文 数学 英语 总分 平均分

a4c26d1e5885305701be709a3d33442f.pngselect stuid as 学号,name as 姓名,

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngsum(case when subject=’语文’ then score else 0 end) as 语文,

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngsum(case when subject=’数学’ then score else 0 end) as 数学,

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngsum(case when subject=’英语’ then score else 0 end) as 英语,

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngsum(score) as 总分,(sum(score)/count(*)) as 平均分

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngfrom stuscore

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pnggroup by stuid,name a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngorder by 总分desc

a4c26d1e5885305701be709a3d33442f.png

8.列出各门课程的平均成绩

a4c26d1e5885305701be709a3d33442f.pngselect subject,avg(score) as avgscore from stuscore

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pnggroup by subject

a4c26d1e5885305701be709a3d33442f.png

9.列出数学成绩的排名

a4c26d1e5885305701be709a3d33442f.pngdeclare @tmp table(pm int,name varchar(50),score int,stuid int)

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pnginsert into @tmp select null,name,score,stuid from stuscore where subject=’数学’ order by score desc

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngdeclare @id int

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngset @id=0;

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngupdate @tmp set @id=@id+1,pm=@id

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngselect * from @tmp a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngselect DENSE_RANK () OVER(order by score desc) as row,name,subject,score,stuid from stuscore where subject=’数学’

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngorder by score desc

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngdeclare @tmp table(pm int identity(1,1),name varchar(50),score int,stuid int)

a4c26d1e5885305701be709a3d33442f.pnginsert into @tmp a4c26d1e5885305701be709a3d33442f.pngselect name,score,stuid from stuscore where subject=’数学’ order by score desc

a4c26d1e5885305701be709a3d33442f.pngselect * from @tmp

10. 列出数学成绩在2-3名的学生

a4c26d1e5885305701be709a3d33442f.pngselect t3.* from

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png(

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngselect top 2 t2.* from (

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngselect top 3 name,subject,score,stuid from stuscore where subject=’数学’

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngorder by score desc

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png) t2 order by t2.score

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png) t3 order by t3.score desc

a4c26d1e5885305701be709a3d33442f.png

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

a4c26d1e5885305701be709a3d33442f.pngdeclare @tmp table(pm int,name varchar(50),score int,stuid int)

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pnginsert into @tmp select null,name,score,stuid from stuscore where subject=’数学’ order by score desc

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngdeclare @id int

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngset @id=0;

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngupdate @tmp set @id=@id+1,pm=@id

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngselect * from @tmp where name=’李四’

a4c26d1e5885305701be709a3d33442f.png

12. 课程不及格(-59) 良(-80) 优(-100)

a4c26d1e5885305701be709a3d33442f.pngselect subject, a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png(select count(*) from stuscore where score<60 and subject=t1.subject) as 不及格,

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png(select count(*) from stuscore where score between 60 and 80 and subject=t1.subject) as 良,

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png(select count(*) from stuscore where score >80 and subject=t1.subject) as 优

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngfrom stuscore t1 group by subject

a4c26d1e5885305701be709a3d33442f.png

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

a4c26d1e5885305701be709a3d33442f.pngdeclare @s varchar(1000)

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngset @s=”

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngselect @s =@s+’,’+name+'(‘+convert(varchar(10),score)+’分)’ from stuscore where subject=’数学’ a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngset @s=stuff(@s,1,1,”)

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.pngprint ‘数学:’+@s


版权声明:本文为weixin_42367557原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42367557/article/details/113026847