数据库知识整理<六>
聚合函数与分组
6.1使用聚合函数进行数据统计:
聚合函数常见的有以下几种:
- count:返回该结果集中行的数目。
- sum:返回结果集中所有值的总和。
- avg:返回结果集中所有值的平均值。
- max:返回结果集中所有值得最大值。
- min:返回结果集中所有值的最小值。
- 执行行和列的计数:select count(<计数规范>) as <别名> from <表名>;其中技术规范的关键字有*、all、distinct。‘*’包括所有行包括空值null,‘all’计数所指定的列的所有非空值行,如果在都不带关键字的情况下默认此操作。‘distinct’计数指定列所有唯一非空值行。
- 返回列合计值:select sum(<计数规范>) as <别名> from <表名>;此函数与count函数唯一使用不同在于,sum不能使用通配符‘*’,其他使用基本一样。
- 获取平均值:select avg(<计数规范>) as <别名> from <表名>;使用all和distinct时,null值被忽略掉。
- 返回最大最小值:select max(<最大值规范>) from 表;select min(<最小值规范>) from 表;都是可以加上别名的。
6.2数据分组:
SQL提供的一种技术,将表中的行分组,然后在每个组上应用聚合函数,这种分组技术与聚合函数一起使用,功能尤为强大。
- 过滤分组数据: select 列A,聚合函数(聚合函数规范) from 表名 where 过滤条件 group by 列A;(这里注意:group by 后面跟的列名是和前面的select 后面的列名同步,面试被问到过这个问题。许多人都没在意过。)例如对表instant数据库输入并执行SQL语句—select studentId ,count(*) AS highPasses from studentExam where mark >70 group by studentId;此语句执行的方式为,先将考试分数小于等于70的先过滤掉,然后再将具有相同的studentId列值的行分组在一起,最后执行count函数,计算余下的行中每个学生通过考试的次数 。
- 使用having子句:
6.3Sql语句的执行顺序:
学过的子句有:
- select子句
- from子句
- where子句
- group by 子句
- order by 子句
- having 子句
执行顺序是:
- 首先是执行from子句
- 再执行where过滤
- 有分组的话就执行group by
- 为每个组计算select祖居聚合函数的值,并为每组生成查询结果中的一行。
- 如果有having子句,则根据having子句在过滤,分组计算聚合计算的结果再次过滤。
- 如果有order by子句中,则根据order by子句中的列,对结果集进行排序。
总结:聚合函数的使用可谓是向一个工具一样,重要性不言而喻。学会使用集合函数其功能是相当强大,相当优雅。Sql语句的执行顺序也是会被考察到的,也要注意区别掌握。
数据库知识整理<六>的更多相关文章
- 数据库知识整理<一>
关系型数据库知识整理: 一,关系型数据库管理系统简介: 1.1使用数据库的原因: 降低存储数据的冗余度 提高数据的一致性 可以建立数据库所遵循的标准 储存数据可以共享 便于维护数据的完整性 能够实现数 ...
- 数据库知识整理<八>
联接: 8.1理解简单的单联接: 基本上联接的结果是每个集合的笛卡尔积.例如:两个集合{a,b,c}和{a,b}的笛卡尔积是如下的成对集合:{(a,a),(a,b),(b,a),(b,b),(c,a) ...
- 数据库知识整理<五>
简单的数据查询: 5.1查询的基本结构: Sql语句:select [distinct] (* | column [alias],...) from table [where condition] [ ...
- 数据库知识整理<二>
又继续写的博客,希望自己能坚持每天写博客.分享自己的点滴,对自己成长有帮助.今天下午高强度打了三个小时篮球,小腿都抽筋了.很爽,失落的心情似乎变得开明了一些.想到了一句话:“像SB式的坚持总会有好的收 ...
- 数据库知识整理<三>
保证数据的完整性: 3.1数据完整性概述: 数据完整性的意义:我们知道数据库能防止储存垃圾数据,RDBMS实现该功能主要是通过维护数据完整性来实现的.根据数据完整性实施方法我们将其分为四类:实体完整性 ...
- 数据库知识整理<四>
使用DML语句更改数据: 所谓DML语句是指数据库操作语句,其中包括的是对数据库数据的修改.删除.插入. 4.1添加新数据: 插入单行的记录:基本的SQL语句为-insert into <表明& ...
- 数据库知识整理<七>
组合查询: 7.1使用子查询: 嵌套在其他查询中的查询,我们称之为子查询.子查询本身也可能包含一个子查询.子查询也称为内部查询,而包含子查询的语句也称为外部查询. 所有的子查询可以被分为两个类别:子查 ...
- 【OGG】OGG基础知识整理
[OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...
- MySQL 索引知识整理(创建高性能的索引)
前言: 索引优化应该是对查询性能优化的最有效的手段了.索引能够轻易将查询性能提高几个数量级. // 固态硬盘驱动器有和机械硬盘启动器,有着完全不同的性能特性: 然而即使是固态硬盘,索引的原则依然成立, ...
随机推荐
- libssh2 的集成与应用
http://blog.csdn.net/wyc6668205/article/details/9179197 Xmanager Enterprise 4 putty 等工具都功能都是利用libssh ...
- NSString和NSMutableString的创建及其一些常用方法
NSString和NSMutableString都是对象类型,是NSObject的子类.NSString是不可变字符串,NSMutableString是可变字符串 一.NSString的创建 1.创建 ...
- Oracle命令:授权-收回权限-角色
Oracle命令:授权-收回权限-角色 oracle grant 不论授予何种权限,每条授权(grant)语句总是由三部分组成: 1) 接受者部分是准备获得权限的一个或多个用户的列表. 2)关键字权限 ...
- Jvm支持的最大线程数
摘自 http://blog.csdn.net/xyls12345/article/details/26482387 JVM最大线程数 (2012-07-04 23:20:15) 转载▼ 标签: jv ...
- awk用法
目前虽然有很多工具可以代替awk,但是呢我还是认为awk还是非常重要,比如有时候load数据到hive,mysql发现数据有点问题,这样可以先对比文件和库中数据是否一致,这样awk就发挥用处了,还有从 ...
- mysql——查询练习
Sutdent表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 学号 INT(10) 是 否 是 是 是 Name 姓名 VARCHAR(20) 否 否 是 否 否 Sex 性 ...
- 《深入理解Nginx》阅读与实践(一):Nginx安装配置与HelloWorld
最近在读陶辉的<深入理解Nginx:模块开发与架构解析>,一是想跟着大牛练练阅读和编写开源代码的能力,二是想学学Nginx优秀的架构设计,三是想找一个点深入下Linux下网络编程的细节.侯 ...
- mysqldb模块的简单用法
# - *- coding:utf-8-*-import urllib2import reimport MySQLdbimport sysreload(sys)sys.setdefaultencodi ...
- Spring----->projects----->Spring Web Flow
1.概述(about Spring Web Folw) Spring Web Flow是spring社区一个子project Spring Web Flow builds on Spring MVC ...
- oracle全文检索
全文检索 oracle对使用几十万以上的数据进行like模糊查询速度极差,包括 like 'AAA%' ,like '%AAA',like '%AAA%',like '%A%A%'的那些模糊查询.网上 ...