6.数据分组-统计信息

---数据分组-统计信息-----
--select 字段列表from 表列表 where 对数据源进行数据筛选group by 分组字段列表Order by 排序字段列表
--1.得到所有学员总人数
select COUNT(*) from Student
--2.得到男女生的人数
select COUNT(*) from Student where Sex=‘男‘
select COUNT(*) from Student where Sex=‘女‘
--使用分组统计
select COUNT(*),sex from Student group by sex

select COUNT(*),sex from Student
select COUNT(*) from Student
select distinct sex from Student

--查询每个班级的人数
--分组统计有一个规则:与聚合函数一起出现在查询中的列,要么被聚合,要么被分组
--1.聚合不应出现在WHERE 子句中,语法规则
--2.where 的执行在分组之前,先对源数据做筛选之后再对筛选得到的结果集做分组
--3.having是对分组统计得到的结果集做筛选的。
--select 字段列表from  表列表 where 源数据筛选条件 group by 分组统计字段列表having  对分组统计结果集做筛选order by 得到最终结果集之后的数据重排
select classid ,COUNT(*)  from Student  group by ClassId  having ClassId=6
select classid 班级,COUNT(*) 人数,StudentNo from Student  group by ClassId  having StudentNo>10
--  5 显示                                       1获取数据源   2  筛选原                   3 对数据源进行分组 4 对分组统计的结果集做筛选   6对最终结果集做数据重排
select classid 班级,COUNT(*) 人数 from Student where Email is not null  group by ClassId  having COUNT(*) between 2 and 3      order by  人数 desc

select StudentNo no,StudentName name from Student where StudentName like ‘%‘

select COUNT(*) 人数 from Student where Email is not null  having COUNT(*)>=3       order by  人数 desc

select classid, sex,COUNT(*) from Student group by ClassId,Sex order by ClassId,sex

--分组统计练习:
--1.查询每个班级的总学时数,并按照升序排列
select classid, SUM(ClassHour) from Subject where ClassId is not null group by ClassId order by SUM(ClassHour)
--2.查询每个参加考试的学员的平均分
select studentNo, AVG(StudentResult) from Result where StudentResult is not null group by StudentNo --having StudentResult is not null
--3.查询每门课程的平均分,并按照降序排列
select SubjectId, AVG(StudentResult) as score from Result where StudentResult is not null group by SubjectId order by  score desc
--4.查询每个班级男女生的人数
select ClassId,Sex, COUNT(*) from Student group by ClassId,Sex
时间: 2024-10-23 03:27:15

6.数据分组-统计信息的相关文章

SQL Server调优系列进阶篇(深入剖析统计信息)

前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQL Server2008R2,利用微软的以前的案例库(Northwind)进行分析,部分内容也会应用微软的另一个案例库AdventureWorks 相信了解SQL Server的朋友,对这两个库都不会太陌生. 概念理解 关于SQL Server中的统计信息,在联机丛书中是这样解释的 查询优化的统计信

SQL Server-深入剖析统计信息

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

SQL SERVER 统计信息概述(Statistics)

前言 查询优化器使用统计信息来创建可提高查询性能的查询计划,对于大多数查询,查询优化器已经为高质量查询计划生成必要的统计信息,但是在少数情况下,您需要创建附加的统计信息或者修改查询设计以得到最佳结果.因此理解和合理使用统计信息是数据库优化的方式之一.   统计信息的分类 根据创建源的不同,统计信息分为两种表统计信息和索引统计信息,除非你自定义它们,否则它们之间没有本质的区别. 索引统计信息建立在索引上面,因此对于创建已经存在的数据上,在创建索引的时候会扫描全部数据,这些数据也会创建在索引的统计信

为准确生成执行计划更新统计信息-analyze与dbms_stats

如果我们想让CBO利用合理利用数据的统计信息,正确判断执行任何SQL查询时的最快途径,需要及时的使用analyze命令或者dbms_stats重新统计数据的统计信息. 例如索引跳跃式扫描(INDEX SKIP SCAN)例子中,如果不对表EMPLOYEE 及索引收集一下统计信息,就不是INDEX SKIP SCAN策略了. 分析统计信息 analyze table 一般可以指定分析: 表,所有字段,所有索引字段,所有索引. 若不指定则全部都分析. ---table统计信息 analyze tab

Oracle执行计划与统计信息的一些总结

[日期:2011-08-05]来源:Linux社区  作者:wangshengfeng1986211[字体:大 中 小] 2010-07-01 15:03 1.SET AUTOTRACE ON EXPLAIN(set autot on exp)SQLPLUS的命令,在执行SQL语句的同时显示执行计划,设置EXP(LAIN)的目的是只显示执行计划而不显示统计信息..2.SQL>explain plan for select ````````;SQL>select * from table(dbm

使用跟踪标记查看过滤统计信息是否被使用

原文:使用跟踪标记查看过滤统计信息是否被使用     在某些情况下,表中数据较多,且分布不均匀的时候,执行计划的估计行数往往会有很大偏差,因此SQL Server 2008引入了过滤统计信息,意味着只对表中的特定数据计算统计信息.那么在调优查询的过程中如何知道语句是否使用了过滤统计信息呢?SQL Server提供了一个隐藏的跟踪标记来支持这一过程.下面Demo可以展示如何使用该跟踪标记.       我们首先对AdventureWorks的SalesOrderDetail做一个简单的查询,代码如

sql调优--记一次统计信息未及时更新导致查询超级慢

            某日同事丢给我一个看上去复杂的查询(实际就设计两张表,套来套去)说只是换了日期条件,但一个查询5秒出数据,一个根本查不出来.现在整理下解决过程,及涉及的知识点. 若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/zzry/p/5857751.html 一.问题描述 环境:sqlserver 2008r2 现象: 查询设计到 ODS_TABLE_A     每日数据700万现在总计60

第13/24周 统计信息

欢迎来到性能调优培训的第4个月.这个月全是关于SQL Server里的统计信息,还有它们如何帮助查询优化器生成足够好的执行计划.统计信息主要是被查询优化器用来估计查询返回的行数.它只是个估计,没别的. 统计信息概述 SQL Server使用在统计信息对象里称作直方图(Histogram)的东西,它描述了对于所给列最大200步长(Steps)的数据分布情况.最大的局限性之一,对于SQL Server里的统计信息是200步长的局限性(使用过滤统计信息可以超过这个步长,这在SQL Server 200

SQL Server 统计信息理解

前言 Sqlserver 查询是基于开销查询的,在首次生成执行计划时,是基于多阶段的分析优化才确定出较好的执行计划.而这些开销的基数估计,是根据统计信息来确定的.统计信息其实就是对表的各个字段的总体数据进行分段分布,数据库默认都会自动维护. 表和视图都有统计信息,统计信息对象是根据索引或表列的列表创建的.当某列第一次最为条件查询时,将创建单列的统计信息.当创建索引时,将创建同名的统计信息.索引中,统计信息只统计首列,因此索引除了按首列排序存储数据外,其统计信息也是按首列计算统计的,所以索引设置时