MySQL——聚合函数知识点
Posted 谁曾见过风-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL——聚合函数知识点相关的知识,希望对你有一定的参考价值。
聚合函数
聚合函数——SQL中用于汇总的函数
常用的聚合函数
COUNT:计算行数
SUM:计算数据求和
AVG:计算数据平均值
MAX:求出一列数据的最大值
MIN:求出一列数据的最小值
下面以商品明细表(product_details)为例:
mysql> select * from product_details;
+------------+--------------+--------------+------------+----------------+-------------+
| product_id | product_name | product_type | sale_price | purchase_price | regist_date |
+------------+--------------+--------------+------------+----------------+-------------+
| 001 | T恤衫 | 衣服 | 1000 | 500 | 2009-09-20 |
| 002 | 打孔器 | 办公用品 | 500 | 320 | 2009-09-11 |
| 003 | 运动T恤 | 衣服 | 4000 | 2800 | NULL |
| 004 | 菜刀 | 厨房用具 | 3000 | 2800 | 2009-09-20 |
| 005 | 高压锅 | 厨房用具 | 6800 | 5000 | 2009-01-15 |
| 006 | 叉子 | 厨房用具 | 500 | NULL | 2009-09-20 |
| 007 | 擦菜板 | 厨房用具 | 880 | 790 | 2008-04-28 |
| 008 | 圆珠笔 | 办公用品 | 100 | NULL | 2009-11-11 |
+------------+--------------+--------------+------------+----------------+-------------+
8 rows in set (0.01 sec)
COUNT函数
通过COUNT后括号内的输入值即参数(parameter),得出输出值即返回值。
1.COUNT(* )——计算全部列的行数
SELECT COUNT(* ) FROM 表名称;
2.COUNT(列名称)——计算单独列的行数
SELECT COUNT(列名称) FROM 表名称;
注:由于存在NULL数据,因此COUNT(*)和COUNT(列名称)得出的返回值可能存在差异
mysql> -- 计算所有列包括NULL的数据行数
mysql> select count(*) from product_details;
+----------+
| count(*) |
+----------+
| 8 |
+----------+
1 row in set (0.00 sec)
mysql> -- 计算单独列会得到除开NULL以外的数据行数
mysql> select count(purchase_price) from product_details;
+-----------------------+
| count(purchase_price) |
+-----------------------+
| 6 |
+-----------------------+
1 row in set (0.04 sec)
SUM函数
1.单列求和计算:SELECT SUM(列名称) FROM 表名称;
2.多列求和计算:SELECT SUM(列名称),SUM(列名称),… FROM 表名称;
注:1.四则运算中,存在NULL,返回值一定是NULL。
2.聚合函数中,以列名为参数,会将NULL排除在外来进行计算,不影响计算结果。
mysql> -- 单列求和计算
mysql> select sum(sale_price) from product_details;
+-----------------+
| sum(sale_price) |
+-----------------+
| 16780 |
+-----------------+
1 row in set (0.00 sec)
mysql> -- 多列求和计算
mysql> select sum(sale_price),sum(purchase_price) from product_details;
+-----------------+---------------------+
| sum(sale_price) | sum(purchase_price) |
+-----------------+---------------------+
| 16780 | 12210 |
+-----------------+---------------------+
1 row in set (0.00 sec)
AVG函数
1.单列求平均值:SELECT AVG(列名称) FROM 表名称;
2.多列求平均值:SELECT AVG(列名称), AVG(列名称),… FROM 表名称;
mysql> -- 单列求平均值
mysql> select avg(sale_price) from product_details;
+-----------------+
| avg(sale_price) |
+-----------------+
| 2097.5000 |
+-----------------+
1 row in set (0.00 sec)
mysql> -- 多列求平均值
mysql> select avg(sale_price),avg(purchase_price) from product_details;
+-----------------+---------------------+
| avg(sale_price) | avg(purchase_price) |
+-----------------+---------------------+
| 2097.5000 | 2035.0000 |
+-----------------+---------------------+
1 row in set (0.00 sec)
MAX/MIN函数
SELECT MAX/MIN(列名称) FROM 表名称;
注:MAX/MIN函数几乎适用于所有数据类型的列,只要是能够排序的数据。
mysql> -- 计算数值类型列的最大值或者最小值
mysql> select max(sale_price),min(purchase_price) from product_details;
+-----------------+---------------------+
| max(sale_price) | min(purchase_price) |
+-----------------+---------------------+
| 6800 | 320 |
+-----------------+---------------------+
1 row in set (0.01 sec)
mysql> -- 计算日期类型列的最大值或者最小值
mysql> select max(regist_date),min(regist_date) from product_details;
+------------------+------------------+
| max(regist_date) | min(regist_date) |
+------------------+------------------+
| 2009-11-11 | 2008-04-28 |
+------------------+------------------+
1 row in set (0.00 sec)
聚合函数+DISTINCT
如何删除重复值后计算数据:
SELECT COUNT/SUM/AVG/MIN/MAX(DISTINCT 列名称) FROM 表名称;
mysql> -- 删除重复值后统计行数
mysql> select count(distinct product_type),count(product_type) from product_details;
+------------------------------+---------------------+
| count(distinct product_type) | count(product_type) |
+------------------------------+---------------------+
| 3 | 8 |
+------------------------------+---------------------+
1 row in set (0.01 sec)
mysql> -- 删除重复值后求和
mysql> select sum(distinct sale_price),sum(sale_price) from product_details;
+--------------------------+-----------------+
| sum(distinct sale_price) | sum(sale_price) |
+--------------------------+-----------------+
| 16280 | 16780 |
+--------------------------+-----------------+
1 row in set (0.00 sec)
未完待续。。。。。。
以上是关于MySQL——聚合函数知识点的主要内容,如果未能解决你的问题,请参考以下文章