sqlserver 统计sql语句大全收藏
发布时间:2020-05-22 20:24:24 所属栏目:MsSql 来源:互联网
导读:SQL统计大全收藏,主要是一些实现统计功能常用的代码,希望对需要的朋友有所帮助.
1.计算每个人的总成绩并排名select name,sum(score) as allscore from stuscore group by name order by allscore2.计算每个人的总成绩并排名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 desc3. 计算每个人单科的最高成绩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.maxscore4.计算每个人的平均成绩 select distinct t1.stuid,t2.avgscore from stuscore t1,avg(score) as avgscore from stuscore group by stuid) t2where t1.stuid=t2.stuid 5.列出各门课程成绩最好的学生 select t1.stuid,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 总分desc8.列出各门课程的平均成绩select subject,avg(score) as avgscore from stuscoregroup by subject9.列出数学成绩的排名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,subject,stuid from stuscore where subject='数学'order by score desc10. 列出数学成绩在2-3名的学生select t3.* from(select top 2 t2.* from (select top 3 name,stuid from stuscore where subject='数学'order by score desc) t2 order by t2.score) t3 order by t3.score desc11. 求出李四的数学成绩的排名declare @tmp table(pm int,pm=@idselect * from @tmp where name='李四'12. 课程 不及格(-59) 良(-80) 优(-100) select subject,(select count(*) from stuscore 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 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,'')print '数学:'+@s (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql – IN与OR OR,哪个更快?
- sql-server – 对于绝对性能,SUM更快还是COUNT?
- sql – 在Oracle中的最大函数中处理Null
- sql-server – DATABASE DESIGN – COUNTRY的主键,CURRENCY
- sql – SSIS中的别名参数
- 数据库 – 存储唯一URL Slug的最佳方法是什么?
- SQLSERVER 2005中使用sql语句对xml文件和其数据的进行操作(
- sql-server – 仅更新插入行的触发器
- sql-server-2008 – 无法连接到Windows Vista上的sql serve
- sql – 带xmlns的OPENXML:dt
推荐文章
站长推荐
- sql – “HAVING … GROUP BY”和“GROUP BY …
- sql-server – 如何在SQL Server 2008中部署CLR函
- 如何将表连接到其自身并在SQL中选择最大值
- plsql – PL / SQL select into – 如果数据存在
- sql-server – 数据库的SIMPLE还是FULL恢复模型?
- sql-server – 将投影添加到NHibernate标准会阻止
- SQL Server 使用xp_cmdshell注销Windows登录用户
- Enterprise Architect:隐藏数据库图中的外键标签
- sql – 为给定月份生成一系列周间隔
- sql – LINQ to Entities在DateTime.DayOfWeek上
热点阅读
