MySQL统计总成绩最⾼的两位学⽣_sql统计-关于学⽣成绩1. 计算每个⼈的总成绩并排名(要求显⽰字段:姓名,总成绩)2. 计算每个⼈的总成绩并排名(要求显⽰字段: 学号,姓名,总成绩)3. 计算每个⼈单科的最⾼成绩(要求显⽰字段: 学号,姓名,课程,最⾼成绩)4. 计算每个⼈的平均成绩(要求显⽰字段: 学号,姓名,平均成绩)5. 列出各门课程成绩最好的学⽣(要求显⽰字段: 学号,姓名,科⽬,成绩)6. 列出各门课程成绩最好的两位学⽣(要求显⽰字段: 学号,姓名,科⽬,成绩) 8.列出各门课程的平均成绩(要求显⽰字段:课程,平均成绩)9.列出数学成绩的排名(要求显⽰字段:学号,姓名,成绩,排名)10.列出数学成绩在2-3名的学⽣(要求显⽰字段:学号,姓名,科⽬,成绩) 11.求出李四的数学成绩的排名13.统计如下:数学:张三(50分),李四(90分),王五(90分),赵六(76分)
学⽣成绩表(stuscore):
姓名:name
课程:subject
分数:score
学号:stuid
张三
数学
89
1
张三
语⽂
80
1
张三
英语
70
1
李四
数学
90
2
李四
语⽂
70
2
李四
英语
80
2
创建表SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[stuscore](
[name][varchar](50) COLLATE Chinese_PRC_CI_ASNULL,
[subject][varchar](50) COLLATE Chinese_PRC_CI_ASNULL,
[score][int]NULL,
[stuid][int]NULL
)ON[PRIMARY]
GO
SETANSI_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.计算每个⼈的总成绩并排名
selectname,sum(score)asallscorefromstuscoregroupbynameorderbyallscore
2. 计算每个⼈的总成绩并排名
selectdistinctt1.name,t1.stuid,t2.allscorefromstuscore t1,
(
selectstuid,sum(score)asallscorefromstuscoregroupbystuid
)t2
wheret1.stuid=t2.stuid
orderbyt2.allscoredesc
3. 计算每个⼈单科的最⾼成绩
selectt1.stuid,t1.name,t1.subject,t1.scorefromstuscore t1,
(
selectstuid,max(score)asmaxscorefromstuscoregroupbystuid
) t2
wheret1.stuid=t2.stuidandt1.score=t2.maxscore
4.计算每个⼈的平均成绩
selectdistinctt1.stuid,t1.name,t2.avgscorefromstuscore t1,
(
selectstuid,avg(score)asavgscorefromstuscoregroupbystuid
) t2
wheret1.stuid=t2.stuid
5.列出各门课程成绩最好的学⽣
selectt1.stuid,t1.name,t1.subject,t2.maxscorefromstuscore t1,
(
selectsubject,max(score)asmaxscorefromstuscoregroupbysubject
) t2
wheret1.subject=t2.subjectandt1.score=t2.maxscore
mysql结课心得1000字6.列出各门课程成绩最好的两位学⽣selectdistinctt1.*fromstuscore t1
wheret1.stuidin
(selecttop2stuscore.stuidfromstuscorewheresubject=t1.subjectorderbyscoredesc)
orderbyt1.subject
7.学号姓名语⽂数学英语总分平均分
selectstuidas学号,nameas姓名,
sum(casewhensubject='语⽂'thenscoreelse0end)as语⽂,
sum(casewhensubject='数学'thenscoreelse0end)as数学,
sum(casewhensubject='英语'thenscoreelse0end)as英语,
sum(score)as总分,(sum(score)/count(*))as平均分
fromstuscore
groupbystuid,name
orderby总分desc
8.列出各门课程的平均成绩
selectsubject,avg(score)asavgscorefromstuscore
groupbysubject
9.列出数学成绩的排名
declare@tmptable(pmint,namevarchar(50),scoreint,stuidint)
insertinto@tmpselectnull,name,score,stuidfromstuscorewheresubject='数学'orderbyscoredesc
declare@idint
set@id=0;
update@tmpset@id=@id+1,pm=@id
select*from@tmp
selectDENSE_RANK ()OVER(orderbyscoredesc)asrow,name,subject,score,stuidfromstuscorewheresubject='数学'
orderbyscoredesc
declare@tmptable(pmintidentity(1,1),namevarchar(50),scoreint,stuidint) insertinto@tmp selectname,score,stuidfromstuscorewheresubject='数学'orderbyscoredesc select*from@tmp 10. 列出数学成绩在2-3名的学⽣
selectt3.*from
(
selecttop2t2.*from(
selecttop3name,subject,score,stuidfromstuscorewheresubject='数学'
orderbyscoredesc
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论