wns9778.com_威尼斯wns.9778官网

热门关键词: wns9778.com,威尼斯wns.9778官网
wns9778.com > 计算机教程 > 【经验分享】SQL 中的统计应用

原标题:【经验分享】SQL 中的统计应用

浏览次数:102 时间:2020-03-12

1.计算每个人的总成绩并排名 select name,sum(score) as allscore from stuscore group by name order by allscore 2.计算每个人的总成绩并排名 select distinct t1.name,t1.stuid,t2.allscore from stuscore t1,( select stuid,sum(score) as allscore from stuscore group by stuid)t2where t1.stuid=t2.stuidorder by t2.allscore desc 3. 计算每个人单科的最高成绩 select t1.stuid,t1.name,t1.subject,t1.score from stuscore t1,(select stuid,max(score) as maxscore from stuscore group by stuid) t2where t1.stuid=t2.stuid and t1.score=t2.maxscore 4.计算每个人的平均成绩 select distinct t1.stuid,t1.name,t2.avgscore from stuscore t1,(select stuid,avg(score) as avgscore from stuscore group by stuid) t2where t1.stuid=t2.stuid 5.列出各门课程成绩最好的学生 select t1.stuid,t1.name,t1.subject,t2.maxscore from stuscore t1,(select subject,max(score) as maxscore from stuscore group by subject) t2where t1.subject=t2.subject and t1.score=t2.maxscore 6.列出各门课程成绩最好的两位学生 select distinct t1.* from stuscore t1 where t1.id in (select top 2 stuscore.id from stuscore 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 stuscoregroup by stuid,name order by 总分desc 8.列出各门课程的平均成绩 select subject,avg(score) as avgscore from stuscoregroup by subject 9.列出数学成绩的排名 declare @tmp table(pm int,name varchar(50),score int,stuid int)insert into @tmp select null,name,score,stuid from stuscore 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,name,subject,score,stuid from stuscore where subject='数学'order by score desc 10. 列出数学成绩在2-3名的学生 select t3.* from(select top 2 t2.* from (select top 3 name,subject,score,stuid from stuscore where subject='数学'order by score desc) t2 order by t2.score) t3 order by t3.score desc 11. 求出李四的数学成绩的排名 declare @tmp table(pm int,name varchar(50),score int,stuid int)insert into @tmp select null,name,score,stuid from stuscore where subject='数学' order by score descdeclare @id intset @id=0;update @tmp set @id=@id 1,pm=@idselect * from @tmp where name='李四' 12. 课程 不及格 良 优 select subject, (select count(*) from stuscore where score60 and subject=t1.subject) as 不及格,(select count(*wns9778.com,) 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 stuscore t1 group by subject 13. 数学:张三(50分),李四(90分),王五(90分),赵六(76分) declare @s varchar(1000)set @s=''select @s =@s ',' name '(' convert(varchar(10),score) '分)' from stuscore where subject='数学' set @s=stuff(@s,1,1,'')print '数学:' @s

学生成绩表(stuscore):

姓名:name

课程:subject

分数:score

学号:stuid

张三

数学

89

1

张三

语文

80

1

张三

英语

70

1

李四

数学

90

2

李四

语文

70

2

李四

英语

80

2

wns9778.com 1wns9778.com 2创建表 ANSI_NULLS ON
wns9778.com 3
wns9778.com 4GO
wns9778.com 5
wns9778.com 6SET QUOTED_IDENTIFIER ON
wns9778.com 7
wns9778.com 8GO
wns9778.com 9
wns9778.com 10SET ANSI_PADDING ON
wns9778.com 11
wns9778.com 12GO
wns9778.com 13
wns9778.com 14CREATE TABLE [dbo].[stuscore](
wns9778.com 15
wns9778.com 16    [name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
wns9778.com 17
wns9778.com 18    [subject] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
wns9778.com 19
wns9778.com 20    [score] [int] NULL,
wns9778.com 21
wns9778.com 22    [stuid] [int] NULL
wns9778.com 23
wns9778.com 24) ON [PRIMARY]
wns9778.com 25
wns9778.com 26 
wns9778.com 27
wns9778.com 28GO
wns9778.com 29
wns9778.com 30SET ANSI_PADDING OFF

wns9778.com 31

问题:

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.       计算每个人的总成绩并排名

wns9778.com 32select name,sum(score) as allscore from stuscore group by name order by allscore
wns9778.com 33
wns9778.com 34

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

wns9778.com 35select distinct t1.name,t1.stuid,t2.allscore from  stuscore t1,
wns9778.com 36
wns9778.com 37(
wns9778.com 38
wns9778.com 39    select stuid,sum(score) as allscore from stuscore group by stuid
wns9778.com 40
wns9778.com 41)t2
wns9778.com 42
wns9778.com 43where t1.stuid=t2.stuid
wns9778.com 44
wns9778.com 45order by t2.allscore desc
wns9778.com 46

本文由wns9778.com发布于计算机教程,转载请注明出处:【经验分享】SQL 中的统计应用

关键词: wns9778.com

上一篇:为游戏而生!红米Redmi将首发联发科技Helio G90T芯

下一篇:没有了