sql统计-关于学生成绩
来源:互联网 发布:福昕阅读器mac版 下载 编辑:程序博客网 时间:2024/04/30 11:15
转载地址:http://www.cnblogs.com/tenghoo/archive/2007/06/11/779240.html
学生成绩表(stuscore):
姓名:name
课程:subject
分数:score
学号:stuid
张三
数学
89
1
张三
语文
80
1
张三
英语
70
1
李四
数学
90
2
李四
语文
70
2
李四
英语
80
2
SET ANSI_NULLSON
GO
SET QUOTED_IDENTIFIERON
GO
SET ANSI_PADDINGON
GO
CREATETABLE[dbo].[stuscore](
[name][varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[subject][varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[score][int]NULL,
[stuid][int]NULL
)ON[PRIMARY]
GO
SET ANSI_PADDINGOFF
问题:
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. 计算每个人的总成绩并排名
2. 计算每个人的总成绩并排名
(
select stuid,sum(score)as allscore from stuscore groupby stuid
)t2
where t1.stuid=t2.stuid
orderby t2.allscoredesc
3. 计算每个人单科的最高成绩
(
select stuid,max(score)as maxscore from stuscore groupby stuid
) t2
where t1.stuid=t2.stuidand t1.score=t2.maxscore
4.计算每个人的平均成绩
(
select stuid,avg(score)as avgscore from stuscore groupby stuid
) t2
where t1.stuid=t2.stuid
5.列出各门课程成绩最好的学生
(
select subject,max(score)as maxscore from stuscore groupby subject
) t2
where t1.subject=t2.subjectand t1.score=t2.maxscore
6.列出各门课程成绩最好的两位学生
where t1.stuidin
(selecttop2 stuscore.stuidfrom stuscorewhere subject= t1.subjectorderby scoredesc)
orderby t1.subject
7.学号 姓名 语文 数学 英语 总分 平均分
sum(casewhen subject='语文'then scoreelse0end)as 语文,
sum(casewhen subject='数学'then scoreelse0end)as 数学,
sum(casewhen subject='英语'then scoreelse0end)as 英语,
sum(score)as 总分,(sum(score)/count(*))as 平均分
from stuscore
groupby stuid,name
orderby 总分desc
8.列出各门课程的平均成绩
groupby subject
9.列出数学成绩的排名
insertinto@tmpselectnull,name,score,stuidfrom stuscorewhere subject='数学'orderby score desc
declare@idint
set@id=0;
update@tmpset@id=@id+1,pm=@id
select*from@tmp
orderby scoredesc
insertinto@tmp
select name,score,stuidfrom stuscorewhere subject='数学'orderby score desc
select*from@tmp
10. 列出数学成绩在2-3名的学生
(
selecttop2 t2.*from (
selecttop3 name,subject,score,stuidfrom stuscorewhere subject='数学'
orderby scoredesc
) t2orderby t2.score
) t3orderby t3.scoredesc
11. 求出李四的数学成绩的排名
insertinto@tmpselectnull,name,score,stuidfrom stuscorewhere subject='数学'orderby score desc
declare@idint
set@id=0;
update@tmpset@id=@id+1,pm=@id
select*from@tmpwhere name='李四'
12. 课程不及格(-59)良(-80)优(-100)
(selectcount(*)from stuscorewhere score<60and subject=t1.subject)as 不及格,
(selectcount(*)from stuscorewhere score between60and80and subject=t1.subject)as 良,
(selectcount(*)from stuscorewhere score >80and subject=t1.subject)as 优
from stuscore t1groupby subject
13. 数学:张三(50分),李四(90分),王五(90分),赵六(76分)
set@s=''
select@s=@s+','+name+'('+convert(varchar(10),score)+'分)'from stuscore where subject='数学'
set@s=stuff(@s,1,1,'')
print'数学:'+@s
- sql统计-关于学生成绩
- sql统计-关于学生成绩
- sql统计-关于学生成绩
- sql统计-关于学生成绩
- sql统计-关于学生成绩
- 【转】 sql统计-关于学生成绩
- sql统计-关于学生成绩
- sql统计-关于学生成绩
- sql统计-关于学生成绩
- sql统计-关于学生成绩
- sql统计-关于学生成绩
- sql统计-关于学生成绩
- sql 统计-关于学生成绩
- 【转】 sql统计-关于学生成绩(答案)
- mysql统计-关于学生成绩
- 统计学生成绩的SQL
- 统计学生成绩的SQL
- 统计学生成绩部分sql语句
- 关于块设备
- Asp.Net MVC3 简单入门详解过滤器Filter
- 使用@entity注解替换表名,Dao层不能够使用实体名称作为注解
- 黑马程序员——集合框架
- java项目优化的一些方法
- sql统计-关于学生成绩
- 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况
- 总线地址、物理地址、虚拟地址相关概念澄清
- linux中的ll(转)
- 《算法竞赛-训练指南》第二章-2.26_UVa 10341
- vc++HOOK详细讲解
- 如何创建第一个Chrome App
- 几种通讯模式
- scanf用法总结