MySQL-汇总函数-COUNT,MIN,MAX,AVG和SUM
在本教程中,我们将学习一些最常用的聚合函数,例如MySQL中的COUNT,MIN,MAX,AVG和SUM。
什么是MySQL中的汇总函数?
这些是MySQL中的函数,它们对一组值执行一些计算,然后返回一个值。
示例:SUM(column_name)
函数计算给定列中存在的值的总和。
我们将在本教程中介绍的汇总函数列表。
- COUNT函数
- MIN函数
- MAX函数
- AVG函数
- SUM函数
订单表
在本教程中,我们将使用如下所示的" orders"表。
mysql> SELECT * FROM orders; +---------+------------+--------+-------------+---------------------+---------------------+ | orderid | employeeid | amount | orderstatus | lastmodified | created | +---------+------------+--------+-------------+---------------------+---------------------+ | 1 | e03 | 15.00 | OPEN | 2016-01-02 03:04:05 | 2016-01-02 03:04:05 | | 2 | e01 | 25.50 | OPEN | 2016-01-04 03:04:03 | 2016-01-04 03:04:03 | | 3 | e05 | 100.70 | CLOSED | 2016-02-02 03:03:04 | 2016-02-02 03:03:04 | | 4 | e02 | 22.18 | OPEN | 2016-01-02 03:04:05 | 2016-01-02 03:04:05 | | 5 | e04 | 9.50 | CANCELLED | 2016-01-04 03:04:03 | 2016-01-04 03:04:03 | | 6 | e04 | 99.99 | OPEN | 2016-02-02 03:03:04 | 2016-02-02 03:03:04 | +---------+------------+--------+-------------+---------------------+---------------------+ 6 rows in set (0.00 sec)
计数
我们使用COUNT函数来找到匹配给定条件的行数。
语法:
SELECT COUNT(column_name) FROM table_name;
在以下示例中,我们在" orders"表中列出了订单总数。
mysql> SELECT COUNT(*) FROM orders; +----------+ | COUNT(*) | +----------+ | 6 | +----------+ 1 row in set (0.01 sec)
因此,订单表中共有6个订单。
我们甚至可以在上面的查询中使用别名。
mysql> SELECT COUNT(*) AS total_order FROM orders; +-------------+ | total_order | +-------------+ | 6 | +-------------+ 1 row in set (0.00 sec)
COUNT个带WHERE子句
语法:
SELECT COUNT(column_name) FROM table_name WHERE condition;
在下面的示例中,我们计算的是雇员编号'e04'下的订单总数。
mysql> SELECT COUNT(*) AS total_order FROM orders WHERE employeeid = 'e04'; +-------------+ | total_order | +-------------+ | 2 | +-------------+ 1 row in set (0.00 sec)
因此,员工编号" e04"共下了2个订单。
计数不同
如果我们要计算一列中的不同值,则可以在COUNT函数中使用DISTINCT。
语法:
SELECT COUNT(DISTINCT column_name) FROM table_name;
在以下示例中,我们计算下订单的不同员工总数。
mysql> SELECT COUNT(DISTINCT employeeid) AS total_unique_employeeids FROM orders; +--------------------------+ | total_unique_employeeids | +--------------------------+ | 5 | +--------------------------+ 1 row in set (0.00 sec)
因此,订单表中共有5个唯一的employeeid。
MIN
我们使用MIN函数来找到最小值。
语法:
SELECT MIN(column_name) FROM table_name;
在以下示例中,我们将在订单表中显示最小订单量。
mysql> SELECT MIN(amount) FROM orders; +-------------+ | MIN(amount) | +-------------+ | 9.50 | +-------------+ 1 row in set (0.00 sec)
因此,订单表中的最小订单量为9.50。
我们可以为上述查询使用别名。
mysql> SELECT MIN(amount) AS min_amount FROM orders; +------------+ | min_amount | +------------+ | 9.50 | +------------+ 1 row in set (0.00 sec)
MIN和WHERE子句
语法:
SELECT MIN(column_name) FROM table_name WHERE condition;
在下面的示例中,我们将在订单表中显示雇员编号" e03"的最小订单金额。
mysql> SELECT MIN(amount) AS min_amount FROM orders WHERE employeeid = 'e03'; +------------+ | min_amount | +------------+ | 15.00 | +------------+ 1 row in set (0.00 sec)
因此,员工编号" e03"的最低订购量为15.00。
最大
我们使用MAX函数来找到最大值。
语法:
SELECT MAX(column_name) FROM table_name;
在以下示例中,我们将在订单表中显示最大订单金额。
mysql> SELECT MAX(amount) FROM orders; +-------------+ | MAX(amount) | +-------------+ | 100.70 | +-------------+ 1 row in set (0.00 sec)
因此,订单表中的最大或者最高订单金额为100.70。
我们可以为给定查询使用别名,如下所示。
mysql> SELECT MAX(amount) AS max_amount FROM orders; +------------+ | max_amount | +------------+ | 100.70 | +------------+ 1 row in set (0.00 sec)
带WHERE子句的MAX
语法:
SELECT MAX(column_name) FROM table_name WHERE condition;
在下面的示例中,我们将在订单表中显示员工编号'e01'的最大订单金额。
mysql> SELECT MAX(amount) AS max_amount FROM orders WHERE employeeid = 'e01'; +------------+ | max_amount | +------------+ | 25.50 | +------------+ 1 row in set (0.00 sec)
因此,员工编号" e01"已将最大值定为25.50。
AVG
我们使用AVG函数查找平均值。
语法:
SELECT AVG(column_name) FROM table_name;
在以下示例中,我们将在订单表中显示平均订单金额。
mysql> SELECT AVG(amount) FROM orders; +-------------+ | AVG(amount) | +-------------+ | 45.478333 | +-------------+ 1 row in set (0.00 sec)
因此,订单表中的平均订单金额为45.478333。
我们也可以在上面的查询中使用别名。
mysql> SELECT AVG(amount) AS avg_amount FROM orders; +------------+ | avg_amount | +------------+ | 45.478333 | +------------+ 1 row in set (0.00 sec)
带WHERE子句的AVG
语法:
SELECT AVG(column_name) FROM table_name WHERE condition;
在下面的示例中,我们将在订单表中显示员工编号'e04'的平均订单金额。
mysql> SELECT AVG(amount) AS avg_amount FROM orders WHERE employeeid = 'e04'; +------------+ | avg_amount | +------------+ | 54.745000 | +------------+ 1 row in set (0.00 sec)
因此,员工编号" e04"下的平均订单金额为54.745000。
和
我们使用SUM函数来求和。
语法:
SELECT SUM(column_name) FROM table_name;
在以下示例中,我们将在订单表中显示总金额,即订单金额的总计。
mysql> SELECT SUM(amount) FROM orders; +-------------+ | SUM(amount) | +-------------+ | 272.87 | +-------------+ 1 row in set (0.00 sec)
因此,订单表中的总订单金额为272.87。
使用别名时,输出将如下所示。
mysql> SELECT SUM(amount) AS total_amount FROM orders; +--------------+ | total_amount | +--------------+ | 272.87 | +--------------+ 1 row in set (0.00 sec)
带WHERE子句的SUM
语法:
SELECT SUM(column_name) FROM table_name WHERE condition;
在以下示例中,我们将在订单表中显示总金额,即OPEN订单的订单金额总计。
mysql> SELECT SUM(amount) AS open_order_total_amount FROM orders WHERE orderstatus = 'OPEN'; +-------------------------+ | open_order_total_amount | +-------------------------+ | 162.67 | +-------------------------+ 1 row in set (0.00 sec)
因此,处于"打开"状态的所有订单的总订单金额为162.67。