汇总数据

聚集函数

我们经常需要汇总数据而不是把他检索出来,例如确定表的行数,获得表的行组的和及求表列的最大值或最小值,这些都需要对表中的数据进行汇总,为此,MySQL中提供了聚集函数来进行汇总数据。

以下是5个常用聚集函数:

以下说明各函数的使用:

MySQL还提供了一系列的标准偏差函数,在此不去叙述。

AVG( )函数

AVG( )可以求出特定列的平均值。

这个例子返回prod_price的平均值。函数的参数为列的名字。

AVG( ) 函数也可以求特定行的平均值,这个时候就要使用WHERE子句来过滤数据。

这个例子就是查找vend_id = 1003的行的数据的平均值。

AVG( )函数只能用来求特定列的平均值,且函数参数是列名,如果想查询多个列的平均值,需要使用多个AVG( )函数。

AVG( )函数忽略值为NULL的行。

COUNT( )函数

COUNT( )函数用来计数,可以确定行的数目,或符合条件的行的数目。

COUNT( )函数有两种使用方式:

1)使用COUNT(*)对表中行的数目进行计算。(包含值为NULL的行)

2)使用COUNT(column)对特定列中具有值得行进行计数,忽略值为NULL得行。

例如在customers表中

假设我们使用COUNT(*)和使用COUNT(cust_email),其结果是不同的。

主要是因为COUNT(*)查询表中的行数,而COUNT(column)只查询这一列值不为空的行数。

MAX( )函数

MAX( )返回指定列的最大值,参数要指定列名。

假设我们要查找的最大值有限定条件,我们也可以使用WHERE子句:

这个例子就加了限定条件vend_id = 1003。

MAX( )允许对于非数值数据的列进行检索,例如用于文本数据的时候,返回字典排序的最大值。

MAX( )函数忽略值为NULL的行。

MIN( )函数

MIN( )函数返回特定列的最小值,同MAX( )用法相同。

SUM( )函数

SUM( )函数返回指定列的和。

例如下面这个例子返回20005订单中quantity列的和。

聚集不同值

对于上述5各函数,都可以使用ALL和DISTINCT用以修饰,DISTINCT只对行中的不同的值进行操作。

这个返回列中不同行的平均值。

DISTINCT只能用于修饰列名,如果使用COUNT(DISTINCT *)会显示错误。

组合聚集函数

以上的例子都只涉及一个函数,但在实际操作中,可以包含多个函数。

这个例子通过多个函数,返回了列的行数,最小值,最大值,平均值。

分组数据

数据分组

在上一节中我们已经可以计算出某一个vend_id的产品数量,但如果我们想要得到每一个vend_id的数量该怎么做呢?

这个时候就可以使用分组来进行检索。

创建分组

分组是使用SELECT语句中的GROUP BY 子句来创建的。

来看一个例子以更好的理解GROUP BY 子句:

在这个例子中,通过GROUP BY 子句,把vend_id列分成几个不同的组,分组依据是vend_id,即vend_id中的不同值。

在使用GROUP 子句之前,要知道一些重要的规定。

1)GROUP BY 子句可以包含任意数目的列,即对分组进行嵌套,为数据分组进行更好的控制。

2)如果嵌套分组,数据将在最后的分组上进行汇总,即最后得出的分组时依据最后规定的分组条件。

3)GROUP BY 子句中列出的每一个列都是有效的列或表达式,但不能是聚集函数之类的(还记得聚集函数吗?)如果在SELECT语句中使用表达式,那么在GROUP BY 子句中也要使用表达式,不能使用别名。

4)除聚集计算语句以外,SELECT 中的所有列,都要在GROUP BY 中列出。

5)如果分组中有NULL值,则NUL为一个新的分组,所有NULL为一组。

6)GROUP BY 必须在WHERE字句之后,在ORDER子句之前。

过滤分组

除了能使用GROUP BY子句进行分组之外,MySQL还支持过滤分组,什么是过滤分组呢? 还记得过滤数据吗?过滤数据使用WHERE进行过滤,但分组中WHERE子句并不能完成任务。因为WHERE过滤的是行而不是分组,这个时候我们就要使用HAVING子句来进行过滤分组。

先看一个例子:

这个例子和上一个例子非常相似,只是多了一个过滤分组子句,他过滤了数量小于3的分组,和WHERE子句很相似。

但事实上WHERE 和HAVING 子句有很大的区别,WHERE子句其实是在分组之前进行过滤,而HAVING则是在分组之后进行过滤。因为HAVING子句在GROUP之后,WHERE 在GROUP之前。

那么有没有WHERE和HAVING混用的情况呢?

看一个例子:

这个例子中相较于上一个例子只是多了一个WHERE子句来过滤数据,先是把所有prod_price>=10的先过滤掉在进行分组,这样分组的结果就会变少。

SELECT 子句顺序

下表是SELECT一些子句的用法与顺序。

MySQL必知必会6相关推荐

  1. MySQL必知必会教程:深入理解MySQL技术内幕

    2019独角兽企业重金招聘Python工程师标准>>> MySQL必知必会教程:深入理解MySQL技术内幕 作为最流行的开源数据库软件之一,MySQL数据库软件已经是广为人知了.当前 ...

  2. mysql必知必会_《MySQL必知必会》学习小结

    关于SQL,之前通过sqlzoo的题目,完成了入门,也仅仅是入门而已. 最近都在忙着投简历和找新的数据分析项目做(为了练python和面试的时候有的聊),所以SQL放了一段时间没练.目前的工作用不到, ...

  3. mysql正则表达式关键字_《MySQL必知必会》正则表达式

    <MySQL必知必会>正则表达式 正则表达式 1.1.关键字 REGEXP 正则表达式的使用需要用到关键字 REGEXP . select prod_name from products ...

  4. 《MySQL必知必会》所有SQL语句图表集合(可作为查询表使用)---已完结

    本篇文章是对<MySQL必知必会>所有语句知识点的图表集合,适合快速查询遗忘的SQL语句. 本文的脉络结构,首先先给出<MySQL必知必会>的目录和本书中用到的数据表的UML图 ...

  5. MYSQL必知必会学习笔记(二)

    MYSQL必知必会四-五章--检索.排序 书中部分代码展示: ##第四第五章 SELECT prod_name FROM products; /*从products表中检索一个叫prod_name的列 ...

  6. mysql必知必会学习笔记(一)

    MYSQL必知必会第三章--了解数据库和表 书中部分代码展示: CREATE DATABASE crashcourse; /*创建名为 crashcourse 的新数据库*/SHOW DATABASE ...

  7. mysql第四章分页显示查询出租房屋信息_MYSQL必知必会读书笔记第四章之检索数据...

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. 使用Select语句返回的数据,可能会发现显 ...

  8. 《MySQL必知必会》[01] 基本查询

    <MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...

  9. mysql必_MySQL必知必会(一)

    摘自<MySQL必知必会> 1.1.1 什么是数据库 数据库:保存有组织的数据的容器(通常是一个文件或一组文件) 人们通常用数据库这个术语来代表他们使用的数据库软件.这是不正确的,它是引起 ...

  10. mysql中用完即删用什么_MySQL使用和操作总结(《MySQL必知必会》读书笔记)

    简介 MySQL是一种DBMS,即它是一种数据库软件.DBMS可分为两类:一类是基于共享文件系统的DBMS,另一类是基于客户机--服务器的DBMS.前者用于桌面用途,通常不用于高端或更关键应用. My ...

最新文章

  1. python 数组升序_python简单数据清洗和分析
  2. (原)调用jpeglib对图像进行压缩
  3. IAR 增加头文件注意事项
  4. Oracle之数据库设计概述
  5. 项目周期一般多久_办公家具定制的特殊性是需要一定的制作周期
  6. (计算机组成原理)第六章总线-第一节:总线概述(概念,分类,系统总线的结构和性能指标)
  7. MediaCodec 编码时间戳问题
  8. 【Kafka】kafka console received unknown topic or partition error listOffset request
  9. ASP.NET的Session会导致的性能问题
  10. 傅里叶变换matlab学习笔记
  11. ECSHOP二次开发之给商品增加新字段
  12. matlab一维数组操作,Matlab创建一维数组的具体操作讲解
  13. win11怎么进安全模式,win11进入安全模式的方法
  14. php工程师的学习之道以及需要掌握的知识体系
  15. 在北大国家发展研究院发言
  16. Ht7038 三相电能计量芯片 测量6路电流。
  17. Your Customers Do Not Mean What They Say
  18. C++~STL容器实例——三国武将阵营管理系统
  19. python实现 Python蟒蛇绘制(嵩天老师 )
  20. 如何通过RSS来订阅天气预报

热门文章

  1. nba2k online名字大全
  2. 世界名画陈列馆(最少机器人问题和不重复监视问题)
  3. 苹果cmsv10+2022新版海螺影视主题模板“带后台“M3.1全解密版本+萌芽采集插件
  4. 2008中国网游老总语录之史玉柱
  5. 在Oracle中,什么是物理读和逻辑读?
  6. 黑苹果电源键睡眠关机的分析及解决办法
  7. 关于enq: US – contention
  8. zabbix 自带模板监控mysql_zabbix使用自带模板监控mysql
  9. 分析复联系列电影台词,看看每个英雄说得最多的词是什么
  10. 小丑改造计划之动态规划