【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更易于理解和使用。

相关推荐
伏虎山真人8 分钟前
开源数据库 - mysql - mysql-server-8.4(gtid主主同步+ keepalived热切换)部署方案
数据库·mysql·开源
FIN技术铺3 小时前
Redis集群模式之Redis Sentinel vs. Redis Cluster
数据库·redis·sentinel
内核程序员kevin4 小时前
在Linux环境下使用Docker打包和发布.NET程序并配合MySQL部署
linux·mysql·docker·.net
CodingBrother4 小时前
MySQL 中的 `IN`、`EXISTS` 区别与性能分析
数据库·mysql
kayotin4 小时前
Wordpress博客配置2024
linux·mysql·docker
代码小鑫5 小时前
A027-基于Spring Boot的农事管理系统
java·开发语言·数据库·spring boot·后端·毕业设计
小小不董5 小时前
Oracle OCP认证考试考点详解082系列16
linux·运维·服务器·数据库·oracle·dba
甄臻9245 小时前
Windows下mysql数据库备份策略
数据库·mysql
内蒙深海大鲨鱼5 小时前
qt之ui开发
数据库·qt·ui
杀神lwz5 小时前
Java 正则表达式
java·mysql·正则表达式