SQL脚本去重分组统计

需求:首先有一张表记录学生姓名、科目和成绩,然后模拟插入几条数据,脚本如下:

create table score
(
       Name     nvarchar(20),--姓名
       subject  varchar(20),--科目
       grade    int--成绩
);

insert into score(name,subject,grade) values(‘张三‘,‘语文‘,100);
insert into score(name,subject,grade) values(‘张三‘,‘数学‘,90);
insert into score(name,subject,grade) values(‘李四‘,‘语文‘,85);
insert into score(name,subject,grade) values(‘王五‘,‘语文‘,99);
insert into score(name,subject,grade) values(‘王五‘,‘英语‘,89);

现在我们需要得到一个结果,能根据姓名分组显示每个学生所参考的科目数量和总分数,期望结果如下:



那么我们需要写入的sql脚本如下:

select name 姓名, count(distinct subject) 科目, sum(grade) 总分
  from score
 group by name

然后就能得到上面结果了,重点是:count(distinct subject) 科目,再一次显示一下结果视图:

时间: 2024-11-05 21:56:17

SQL脚本去重分组统计的相关文章

010.简单查询、分组统计查询、多表连接查询(sql实例)

-------------------------------------day3------------ --添加多行数据:------INSERT [INTO] 表名 [(列的列表)] --SELECT UNION --SELECT 'HAHA',1,32--UNION ALL --全部显示/显示重复数据 即使集合相同--UNION---------将查询的两个结果集合并.结构必须一致 -->常见面试题 --SELECT 'HEHE',2,33------将查询结果添加到列表中(子查询)IN

Excel 中使用SQL 语句查询数据(八)-----用Group by 进行分组统计

今天要和大家分享用在sql 语句中使用group by来进行分组统计.大家首先来看一下数据源. 用OLE DB 打开数据源,(步骤请参考本系列第一篇博文) 最后一条语句group by Item ,就是以Item 列分组. 结果如下 按照item 分类汇总

最常用的SQL排序、分组与统计的使用方法

以一种有意义的方式组织数据可能是一项挑战.有时你需要的可能是一个简单的排序,但是通常你需要做更多,你需要分组来进行分析和统计.幸运的是,SQL提供了大量语句和操作来进行排序,分组和摘要.下面的一些技巧将会帮助你识别什么时候排序,什么时候分组,什么时候以及如何统计.对要每条语句和操作的详细信息请查看Books Online. 1. 使用排序使数据有序 通常,你的所有数据真正需要的仅仅是按某种顺序排列.SQL的ORDER BY语句可以以字母或数字顺序组织数据.因此,相似的值按组排序在一起.然而,这个

sql 分组统计查询并横纵坐标转换

关于sql 分组统计查询,我们在做报表的时候经常需要用到;今天就在这里整理下; 先附上一段sql代码: if object_id(N'#mytb',N'U') is not null drop table #mytbgodeclare @Year intset @Year=2014create table #mytb ([Date] int,[Count] int,[Price] decimal(18, 0),[spbm] varchar(50),[sppp] varchar(100),[spm

(转)最常用的SQL排序、分组与统计的使用方法 Order by/Group by/having等的使用

以一种有意义的方式组织数据可能是一项挑战.有时你需要的可能是一个简单的排序,但是通常你需要做更多,你需要分组来进行分析和统计.幸运的 是,SQL提供了大量语句和操作来进行排序,分组和摘要.下面的一些技巧将会帮助你识别什么时候排序,什么时候分组,什么时候以及如何统计.对要每条语句 和操作的详细信息请查看Books Online. 1. 使用排序使数据有序 通常,你的所有数据真正需要的仅仅是按某种顺序排列.SQL的ORDER BY语句可以以字母或数字顺序组织数据.因此,相似的值按组排序在一起.然而,

【SQL Server 2012】按倒序存储“分组统计”结果的临时表到新建表

程序预先说明: 本文访问的数据库是基于存有RDF三元组的开源数据库Localyago修改的库,其中只有一个表,表中有五个属性:主语subject.谓语predict.宾语object.主语的编号subid,宾语的编号objid.每条记录由(subject,predict,object,subid,objid)组成.其中当宾语为字符型而不是实体时(比如"2011"),编号默认为0.有以下数据表: 程序需求: 统计每个主语有多少相关的谓语属性(每个谓语可有多个宾语),即有多少以该实体作为主

统计百分比的一个SQL脚本

统计一个表中一个百分比的SQL脚本,不过这个是个万分比,这个数据类型要调一调 1 declare @num1 nvarchar(10),@num2 nvarchar(10) 2 declare @num3 decimal,@num4 decimal 3 declare @percent decimal 4 5 select @num1=COUNT (*) from [Test] where Status=0 ; 6 select @num2=COUNT (*) from [Test] ; 7 s

Oracle按不同时间分组统计

Oracle按不同时间分组统计 Oracle按不同时间分组统计的sql 如下表table1: 日期(exportDate) 数量(amount) -------------- ----------- 14-2月 -08 20 10-3月 -08 2 14-4月 -08 6 14-6月 -08 75 24-10月-09 23 14-11月-09 45 04-8月 -10 5 04-9月 -10 44 04-10月-10 88 注意:为了显示更直观,如下查询已皆按相应分组排序 1.按年份分组 sel

SQL Server-深入剖析统计信息

转自: http://www.cnblogs.com/zhijianliutang/p/4190669.html   概念理解 关于SQL Server中的统计信息,在联机丛书中是这样解释的 查询优化的统计信息是一些对象,这些对象包含与值在表或索引视图的一列或多列中的分布有关的统计信息.查询优化器使用这些统计信息来估计查询结果中的基数或行数.通过这些基数估计,查询优化器可以创建高质量的查询计划.例如,查询优化器可以使用基数估计选择索引查找运算符而不是耗费更多资源的索引扫描运算符,从而提高查询性能