【MySQL】汇总数据

目录

一、聚集函数

1.AVG()参数

2.COUNT()函数

3.MAX()函数

4.MIN()函数

5.SUM()函数

二、聚集不同值

三、组合聚集函数


一、聚集函数

聚集函数:运行在行组上,计算和返回单个值的函数,用来汇总数据

SQL聚集函数

|---------|----------|
| AVG() | 返回某列的平均值 |
| COUNT() | 返回某列的行数 |
| MAX() | 返回某列的最大值 |
| MIN() | 返回某列的最小值 |
| SUM() | 返回某列值之和 |

1.AVG()参数

AVG()通过对表中行数计数并计算特定列值之和,求得该列的平均值。AVG()可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。

示例:在表t_goods中算出price的平均值放在avg_price列中,avg_price是一个别名

输入: select AVG(price)

as avg_price

from t_goods;

输出:

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

示例:包含where子句,约束vend_id = 2的产品

输入:select AVG(prod_price)

as avg_price

from products

where vend_id = 2;

输出:

注意:AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个AVG()函数。
NULL值:AVG()函数忽略列值为NULL的行。

2.COUNT()函数

COUNT()函数进行计数。确定表中行的数目或符合特定条件的行的数目

COUNT()函数的两种表示方式:

  • 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的时空值
  • 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。

示例:根据name计算t_user表中的人员总数

输入:select COUNT(*)

as name

from t_user;

输出:

NULL值:如果指定列名,则指定列的值为空的行被COUNT()函数省略,但如果COUNT()函数中用的是(*),则不忽略。

3.MAX()函数

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

示例:在表t_goods中找到price列的最大值

输入:select MAX(price)

as MAX_price

from t_goods;

输出:

注意:对非数值数据使用MAX()函数 虽然MAX()函数一般用来找出最大的数值或日期值,

但MySQL允许将它用来返回任意列中的最大值,包括返回文本列中的最大值。在用于文本数据时,如果数据按相应的列排序,则MAX()返回最后一行。
NULL值:MAX()函数忽略列值为NULL的行

4.MIN()函数

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

示例:在表t_goods中找到price列的最小值

输入: select MIN(price)

as MIN_price

from t_goods;

输出:

注意:MySQL允许将MIN()用来返回任意列中的最小值,包括返回文本列中的最小值。在用于文本数据时,如果数据按相应的列排序,则MAX()返回最前面的行。
NULL值:MAX()函数忽略列值为NULL的行

5.SUM()函数

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

示例:在表t_goods中计算price的总和并放在SUM_price列中

输入:select SUM(price)

as SUM_price

from t_goods;

输出:

SUM()也可以用来计算合计计算值。

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

二、聚集不同值

以上五个函数都可以都可以如下使用:

  1. 对所有的行执行计算,指定ALL参数或不给参数(因为ALL是默认行为)
  2. 只包含不同的值,指定DISTINCT参数

distinct的作用就是去重

注意:如果指定列名,则distinct只能用于count()。distinct不能用于count(*),因此不允许使用count(distinct),否则会产生错误。类似的,distinct必须使用列名,不能用于计算或表达式。

将distinct用于MAX和MIN函数 虽然技术上可以用在这俩个函数上,但是没有实际价值,最大值和最小值不管是否包含不同值都是相同的。

三、组合聚集函数

目前为止的所有聚集函数例子都只涉及单个函数。但实际上select语句可根据需要包含多个聚集函数。

示例:在t_goods中找出price的数量以及最大值,最小值,平均值

输入:select count(*) as price,

MAX(price) as MAX_price,

MIN(price) as MIN_price,

AVG(price) as AVG_price

from t_goods;

输出:

取别名:在指定别名以包含某个聚集函数的结果时,不应该使用表中的实际列名。这样做使SQL更易于理解和使用。

相关推荐
云边的快乐猫38 分钟前
在Linux中对mysql用户进行管理
linux·数据库·mysql·用户管理·用户权限
ChenWenKen1 小时前
戴尔电脑安装centos7系统遇到的问题
数据库·电脑
gorgor在码农1 小时前
redis 底层数据结构
java·数据库·redis
dgiij2 小时前
node.js中实现MySQL的增量备份
数据库·mysql·node.js
jamesge20102 小时前
如何构建SAAS项目
数据库
用户40709413135812 小时前
MySQL日志———Binlog日志
mysql
Mr数据杨3 小时前
解决整合Django与Jinja2兼容性的问题
数据库·django·sqlite
Adolf_19933 小时前
Django中 model 一对一 一对多 多对多关系 关联
数据库·django·sqlite
ueanaIU潇潇子3 小时前
idea根据实体类生成数据库表
数据库·mysql·intellij-idea·实体类生成数据库
爱读源码的大都督3 小时前
PostgreSQL数据库中Sequence的使用详解
数据库·后端·架构