数据库知识整理<六>
聚合函数与分组
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 索引知识整理(创建高性能的索引)
前言: 索引优化应该是对查询性能优化的最有效的手段了.索引能够轻易将查询性能提高几个数量级. // 固态硬盘驱动器有和机械硬盘启动器,有着完全不同的性能特性: 然而即使是固态硬盘,索引的原则依然成立, ...
随机推荐
- Fliwer:监控植物状态 实现远程浇水
Fliwer是一款针对植物而研发出来的设备,可以监控土壤水分.光照.温度.空气湿度和肥料是否充足这些指标.结合云端的植物数据和天气预报,它能够自动决定什么时候给植物浇水,甚至提醒你什么时候应该施肥.修 ...
- Linux 命令 ls -l
一.ll命令 ll并不是linux下一个基本的命令,它实际上是ls -l的一个别名. Ubuntu默认不支持命令ll,必须用 ls -l,这样使用起来不是很方便. 如果要使用此命令,可以作如下修改:打 ...
- Myeclipse解决dubbo标签不识别问题
Myeclipse解决dubbo标签不识别问题,引入dubbo.xsd文件,即可:
- CentOS6.5 Openssl版本升级
CentOS6.5 Openssl 升级: 第一步:在openssl官网(https://www.openssl.org/)下载最新版 Ps:个人使用的是openssl-1.0.1u.tar.gz版 ...
- spark1.5.1环境搭建
今天一个小伙伴找我搞spark,搞了一个中午都没搭建好.心里痒痒的.索性自己重来了一遍. 本来很简单的事情,被这小子搞的老复杂了.究其原因,有以下几点: 下载的软件不对,我用的是这两个软件 spark ...
- srum.3
1. 确保product backlog井然有序.(参考示例图1) 2. Sprint周期,一个冲刺周期,长度定为两周,本学期还有三个冲刺周期. 3. 确定Sprint目标. 3.1 产品负责人概括产 ...
- Android_layout 布局(一)
今天主要学习了Android 的layout布局. Android layout 布局一般分为五种: LinearLayout (线性布局) :子组件按照垂直或者水平方向来布局. RelativeLa ...
- JQuery 动画及一些小知识点
JQuery 动画 show(),hide()显示/隐藏slideDown(),slideUp() 拉开/合起fadeIn(),fadeOut()渐出/渐入自定义动画 animate({left:& ...
- 解决Linux c语言运行时候“段错误 (核心已转储)”问题-采用gdb 解决
编译没有警告,没有错误,运行就打印 段错误 (核心已转储) 网上找了一下,都是各种问题,都推荐用gdb 调试解决,咱也来趁机学习gdb一下. gcc+gdb)输入命令行 运行 sudo apt-g ...
- Builder(生成器)-对象创建型模式
一.意图 将一个复杂对象的构建与它的表示分离,使得同样的构造过程可以创建不同的表示. 二.动机 一个复杂的对象的构造过程中,原料相同,可能会要求生产不同的产品,并且生产的产品种类还能够方便的增加.Bu ...