当前位置:  数据库>sqlserver

sql统计查询实例代码

    来源: 互联网  发布时间:2014-08-29

    本文导语:  首先,创建用到的数据表。   代码示例: CREATE TABLE `stuscore` (     `id` int(11) NOT NULL auto_increment,     `name` varchar(20) default NULL,     `subject` varchar(20) default NULL,     `score` varchar(20) default NULL,     `stuid` varchar(10) default NUL...

首先,创建用到的数据表。
 

代码示例:
CREATE TABLE `stuscore` (  
  `id` int(11) NOT NULL auto_increment,  
  `name` varchar(20) default NULL,  
  `subject` varchar(20) default NULL,  
  `score` varchar(20) default NULL,  
  `stuid` varchar(10) default NULL,  
  PRIMARY KEY  (`id`)  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
 

 
然后,添加测试数据。
 

代码示例:
/*Data for the table `stuscore` */
insert  into `stuscore`(`id`,`name`,`subject`,`score`,`stuid`) values
(1,'张三','数学','89','1'),  
(2,'张三','语文','80','1'),  
(3,'张三','英语','70','1'),  
(4,'李四','数学','90','2'),  
(5,'李四','语文','70','2'),  
(6,'李四','英语','80','2'); 

#--问题及解答:

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

代码示例:
select name,sum(score) as allscore from stuscore group by name order by allscore desc 

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

代码示例:
select stuid,name,sum(score) as allscore from stuscore group by name order by 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) t2
where 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) t2
where 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) t2
where t1.subject=t2.subject and t1.score=t2.maxscore 

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

代码示例:
select distinct t1.* from stuscore t1 where t1.stuid in
(select top 2 stuscore.stuid from stuscore where subject = t1.subject order by score desc)
order by t1.subject 
 

该语句未测试,目前知道在mysql下无法运行。mysql不支持select top。

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 stuscore  
group by stuid,name
order by 总分 desc 

8. 列出各门课程的平均成绩(要求显示字段:课程,平均成绩)
select subject,avg(score) as avgscore from stuscore group by subject 

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

代码示例:
select * 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 desc 
declare @id int 
set @id=0;  
update @tmp set @id=@id+1,pm=@id  
select * from @tmp where name='李四' 

12.
 

代码示例:
select subject,
(select count(*) from stuscore where score80 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

说:第10,11,13题未验证,大家在使用时,注意测试。


    
 
 

您可能感兴趣的文章:

  • sql语句实例 取得日志条目的sql语句
  • SQL分组排序去除重复实例
  • php防止sql注入代码实例
  • T-SQL实例 函数结果设置为列别名
  • 怎样不执行SELECT SQL语句即可获得ResultSetMetaData实例????
  • sql语句实例 统计一个特定页面中的相关链接
  • SQL分组排序去重复的小实例
  • sql语句实例 统计页面链接的sql语句
  • 教你怎么使用sql游标实例分享
  • mysqli多条sql语句查询实例
  • MSSQL中递归SQL查询语句实例说明-
  • sql语句not and or执行顺序(实例解析)
  • Sql Server中存储过程中输入和输出参数(简单实例 一看就懂)
  • SQL语句练习实例之七 剔除不需要的记录行
  • SQL cursor用法实例
  • sql server 触发器实例(判断是插入、删除,还是修改)
  • sql中获取分组排序后数据方法实例
  • sql条件查询语句的简单实例
  • sql server 触发器实例:特定字段更新时触发Update触发器
  • sql语句like多个条件的写法实例
  • SQL Server统计SQL语句执行时间的脚本
  • Sql Server多行合并一行 sql分组统计
  • SQL分组统计简单例子
  • 经典sql代码--统计文章各种分类总数
  • SQL 平均数统计
  • 用SQL统计SQLServe表存储空间大小的代码
  • 经典sql代码--统计电话通话次数以及时长
  • SQL语句技巧:按月统计数据
  • 统计某一字段等于不同值的个数的sql语句
  • SQL按照日、周、月、年统计数据的方法
  • Sql Server 分组统计并合计总数(WITH ROLLUP用法)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • sql2005 大数据量检索分页的sql代码
  • 经典sql代码--解决并清除SQL被注入恶意代码的语句
  • 创建 sql server 链接服务器的sql代码
  • sql server 删除表1某些数据的同时自动删除表2的相关数据的sql代码
  • SQL Server中选出指定范围行的SQL语句代码
  • 推荐SQL Server 重新恢复自动编号列的序号的sql代码
  • C#代码验证sql语句是否正确(只验证不执行sql)的方法
  • sql 查询所有数据库、表名、表字段的代码
  • sql 行转列示例代码
  • asp连接sql server 2005的代码
  • 一定得帮我看看sql server2000通过sql server2000jdbc driver的代码
  • 请问在 Linux 下如何用代码实现连接oracle数据库 并 执行 SQL 语句?
  • 在ADF中跟踪SQL执行时间实现代码
  • SQL cursor用法实例 iis7站长之家
  • 查找特定类别的列 sql代码
  • Oracle SQL中实现indexOf和lastIndexOf功能的思路及代码
  • 简单的SQL Server备份脚本代码
  • 经典sql代码--逐行计算、逐行递延、逐行更新
  • sql server获取月份名称缩写的代码
  • SQL Server本地时间和UTC时间的相互转换实现代码
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3