聚集函数

我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提

供了专门的函数。使用这些函数,MySQL查询可用于检索数据,以便分

析和报表生成。这种类型的检索例子有以下几种。

确定表中行数(或者满足某个条件或包含某个特定值的行数)。

获得表中行组的和。

找出表列(或所有行或某些特定的行)的最大值、最小值和平均

值。

上述例子都需要对表中数据(而不是实际数据本身)汇总。因此,

返回实际表数据是对时间和处理资源的一种浪费(更不用说带宽了)。重

复一遍,实际想要的是汇总信息。

为方便这种类型的检索,MySQL给出了5个聚集函数,见表12-1。

这些函数能进行上述罗列的检索

聚集函数(aggregate function) 运行在行组上,计算和返回单

个值的函数。

AVG()函数

AVG() 通过对表中行数计数并计算特定列值之和,求得该列的平均

值。 AVG() 可用来返回所有列的平均值,也可以用来返回特定列或行的平

均值。

AVG() 也可以用来确定特定列或行的平均值

这条 SELECT 语句与前一条的不同之处在于它包含了 WHERE 子

句。此 WHERE 子句仅过滤出 vend_id 为 1003 的产品,因此

avg_price 中返回的值只是该供应商的产品的平均值

只用于单个列 AVG() 只能用来确定特定数值列的平均值,而

且列名必须作为函数参数给出。为了获得多个列的平均值,

必须使用多个 AVG() 函数

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

COUNT()函数

COUNT() 函数进行计数。可利用 COUNT() 确定表中行的数目或符合特

定条件的行的数目。

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

使用 COUNT(*) 对表中行的数目进行计数,不管表列中包含的是空

值( NULL )还是非空值。

使用 COUNT(column) 对特定列中具有值的行进行计数,忽略

NULL 值。

下面的例子返回 customers 表中客户的总数

下面的例子只对具有电子邮件地址的客户计数

这条 SELECT 语句使用 COUNT(cust_email) 对 cust_email 列

中有值的行进行计数。在此例子中, cust_email 的计数为 3 (表

示5个客户中只有3个客户有电子邮件地址)

NULL 值 如果指定列名,则指定列的值为空的行被 COUNT()

函数忽略,但如果 COUNT() 函数中用的是星号( * ),则不忽

MAX()函数

MAX() 返回指定列中的最大值。 MAX() 要求指定列名

对非数值数据使用 MAX() 虽然 MAX() 一般用来找出最大的

数值或日期值,但MySQL允许将它用来返回任意列中的最大

值,包括返回文本列中的最大值。在用于文本数据时,如果数

据按相应的列排序,则 MAX() 返回最后一行

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

MIN()函数

MIN() 的功能正好与 MAX() 功能相反,它返回指定列的最小值。与

MAX() 一样, MIN() 要求指定列名

对非数值数据使用 MIN() MIN() 函数与 MAX() 函数类似,

MySQL允许将它用来返回任意列中的最小值,包括返回文本

列中的最小值。在用于文本数据时,如果数据按相应的列排序,

则 MIN() 返回最前面的行

NULL 值 MIN() 函数忽略列值为 NULL 的行

SUM()函数

SUM() 用来返回指定列值的和(总计)。

下面举一个例子, orderitems表 包含订单中实际的物品,每个物品

有相应的数量( quantity )。可如下检索所订购物品的总数(所有

quantity 值之和):

函数 SUM(quantity) 返回订单中所有物品数量之和, WHERE 子

句保证只统计某个物品订单中的物品

SUM() 也可以用来合计计算值。在下面的例子中,合计每项物品的

item_price*quantity ,得出总的订单金额

函数 SUM(item_price*quantity) 返回订单中所有物品价钱

之和, WHERE 子句同样保证只统计某个物品订单中的物品

在多个列上进行计算 如本例所示,利用标准的算术操作符,

所有聚集函数都可用来执行多个列上的计算

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

聚集不同值

MySQL 5 及 后 期 版 本 下 面 将 要 介 绍 的 聚 集 函 数 的

DISTINCT 的使用,已经被添加到MySQL 5.0.3中。下面所述

内容在MySQL 4.x中不能正常运行

以上5个聚集函数都可以如下使用:

对所有的行执行计算,指定 ALL 参数或不给参数(因为 ALL 是默认

行为);

只包含不同的值,指定 DISTINCT 参数。

ALL 为默认 ALL 参数不需要指定,因为它是默认行为。如果

不指定 DISTINCT ,则假定为 ALL

下面的例子使用 AVG() 函数返回特定供应商提供的产品的平均价格。

它与上面的 SELECT 语句相同,但使用了 DISTINCT 参数,因此平均值只

考虑各个不同的价格

注意 如果指定列名,则 DISTINCT 只能用于 COUNT() 。 DISTINCT

不能用于 COUNT(*),因此不允许使用COUNT(DISTINCT),

否则会产生错误 。类似地, DISTINCT 必须使用列名,不能用

于计算或表达式

将 DISTINCT 用于 MIN() 和 MAX() 虽然 DISTINCT 从技术上可

用于 MIN() 和 MAX() ,但这样做实际上没有价值。一个列中的

最小值和最大值不管是否包含不同值都是相同的

组合聚集函数

目前为止的所有聚集函数例子都只涉及单个函数。但实际上 SELECT

语句可根据需要包含多个聚集函数。请看下面的例子:

取别名 在指定别名以包含某个聚集函数的结果时,不应该使

用表中实际的列名。虽然这样做并非不合法,但使用唯一的名

字会使你的SQL更易于理解和使用(以及将来容易排除故障)

聚集函数用来汇总数据。MySQL支持一系列聚集函数,可以用多种

方法使用它们以返回所需的结果。这些函数是高效设计的,它们返回结

果一般比你在自己的客户机应用程序中计算要快得多

这就是微学网-程序员之家为你提供的"MySQL必知必会--汇 总 数 据"希望对你有所帮助.本文来自网络,转载请注明出处:http://www.weixuecn.cn/article/7639.html

mysql必知必会的数据_MySQL必知必会--汇 总 数 据相关推荐

  1. mysql在查询结果中添加数据_MySQL将查询结果插入到数据表中

    转自Mysql教程:http://www.baike369.com/content/?id=5582 MySQL将查询结果插入到数据表中 INSERT语句还可以将SELECT语句查询出来的数据插入到另 ...

  2. mysql 以周为单位记录数据_mysql 按年度、季度、月度、周、日SQL统计查询

    创建Table CREATE TABLE `test` ( `cdate` datetime DEFAULT NULL, `id` int(11) DEFAULT NULL, `name` varch ...

  3. mysql防止从节点可写数据_mysql 主从数据不一致 Slave_SQL_Running: No 解决方法

    在slave服务器上通过如下命令 MysqL> show slave status\G; 显示如下情况: Slave_IO_Running: Yes Slave_sql_Running: No ...

  4. mysql 异常关机后 无法查数据_MySQL数据库非法关机造成数据表损坏怎么排查 | 学步园...

    该篇文章我们介绍由于非法硬件关机,造成了MySQL数据库的数据表损坏,数据库不能正常运行的一个实例.下面学步园小编来讲解下MySQL数据库非法关机造成数据表损坏怎么排查? MySQL数据库非法关机造成 ...

  5. mysql删除以什么开头的数据_Mysql如何删除以“#sql-”开头的临时表

    Mysql如何删除以"#sql-"开头的临时表 现象:在重建索引后,发现Mysql服务器的磁盘空间快满了 在用如下命令重建索引 mysql> alter table skat ...

  6. mysql一次读取500条数据_mysql批量插入500条数据

    表格结构如下 需求name和password字段,生成如下格式: 总共批量生成500个. 解决思路:可以用mysql 存储过程 如果linux环境下可以用shell 我们先测试第一种,用存储过程.DE ...

  7. mysql查询每个用户第一条数据_MySQL数据库订单表按用户邮箱字段分组查询每个用户的第一条记录...

    程序开发或者一些数据统计时,在MySQL中使用GROUP BY分组是很常用的SQL语句.那么,如果如下的简单示例订单数据表,我们现需要使用GROUP BY分组后查询每个用户的第一个订单记录,应该如何实 ...

  8. mysql中最新7天的数据_mysql中最新7天的数据库

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  9. mysql 以周为单位记录数据_mysql 按月/按周汇总统计函数 DATE_FORMAT() 函数

    MySQL DATE_FORMAT() 函数 定义和用法 DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. 语法 DATE_FORMAT(date,format) date 参数是 ...

最新文章

  1. SPOJ375(树链剖分)
  2. sqlite3里类似top的用法
  3. 蓝湖怎么切图标注_【蓝湖指北】一张图教你如何选择标注尺寸
  4. 手写自己的MyBatis框架-SqlSession
  5. 写程序和做网店的压力都很大
  6. scheduledthreadpoolexecutor使用_ScheduledThreadPoolExecutor详解
  7. 以前是传xml的吗_明明不太合适但是还是被用在配置文件和数据传输上的XML
  8. react取消捕获_React学习笔记(三)
  9. C++字符串的不同存放类型 (string/char[])
  10. laravel admin 根绝model创建控制器路由命令
  11. 2015-2020年各类国际会议与期刊基于图像的三维对象重建论文综述(5)——Leveraging other clues
  12. ES6模块的循环加载
  13. windows 2003活动目录更名操作[图]
  14. Java基础知识笔记第八章:常用的实体类
  15. 万年历算法介绍(C程序)
  16. 2.晶晨A311D-编译Ubuntu/Debian固件
  17. Oracle认证(ocjp)通关之路
  18. 可控硅型号怎样识别_可控硅型号分类
  19. springboot版的微信公众号,订阅号
  20. 超六类网线和六类网线的区别—Vecloud

热门文章

  1. 学习linux可以考虑做的岗位
  2. Google 天气预报 API
  3. 谁说啤酒不能做互联网?啤酒市场的春天来了,加速版商业模式分享——加速版乐分享商业模式加积分释放双驱动
  4. 一起来看流星雨剧情简介/剧情介绍/剧情分集介绍第三十六集
  5. 一文带你入门Redis
  6. Docker-CE 监控
  7. 爬虫入门(三):使用requests爬取搜狗搜索页面
  8. js中的var是什么意思
  9. 我真没想写图书管理系统啊
  10. STM8L探索套件学习笔记-EXTI外部中断