函数 | 作用 |
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列的的和 |
1. COUNT() 函数
COUNT() 函数统计数据表中包含的记录行数,或者根据查询结果返回列中包含的数据行数。
使用方法:
a. COUNT(*) 计算表中总的行数,不管某列有数值或者为空值。
b. COUNT(字段名) 计算指定列下总的行数,计算时将忽略空值的行。
【例】建立如下数据表
mysql> SELECT * FROM customers;
+-------+----------+-----------------------+---------+--------+-----------+-------------------+
| c_id | c_name | c_address | c_city | c_zip | c_contact | c_email |
+-------+----------+-----------------------+---------+--------+-----------+-------------------+
| 10001 | RedHook | 200 Street | Tianjin | 300000 | LiMing | LiMing@163.com |
| 10002 | Stars | 333 Fromage Lane | DaLian | 116000 | ZhangBo | Jerry@hotmail.com |
| 10003 | Netbhood | 1 Sunny Place | Qingdao | 266000 | LuoCong | NULL |
| 10004 | JOTO | 829 Riverside Drive | HaiKou | 570000 | YangShan | sam@hotmail.com |
+-------+----------+-----------------------+---------+--------+-----------+-------------------+
查询 customers 表中总的行数 ,SQL 语句如下:
mysql> SELECT COUNT(*) AS cust_num
-> FROM customers;
+----------+
| cust_num |
+----------+
| 4 |
+----------+
查询 customers 表中有电子邮箱的顾客的总数,SQL 语句如下:
mysql> SELECT COUNT(c_email) AS cust_num
-> FROM customers;
+----------+
| cust_num |
+----------+
| 3 |
+----------+
2. SUM() 函数
SUM() 是一个求总和的函数,返回指定列值得到总和。
SUM() 函数在计算时, 会忽略列值为 NULL 的行
3. AVG() 函数
AVG( ) 函数通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。
【例】fruits 表。
mysql> select * from fruits;
+------+------+------------+---------+
| f_id | s_id | f_name | f_price |
+------+------+------------+---------+
| a1 | 101 | apple | 5.20 |
| a2 | 103 | apricot | 2.20 |
| b1 | 101 | blackberry | 10.20 |
| b2 | 104 | berry | 7.60 |
| b5 | 107 | xxxx | 3.60 |
| bs1 | 102 | orange | 11.20 |
| bs2 | 105 | melon | 8.20 |
| c0 | 101 | cherry | 3.20 |
| l2 | 104 | lemon | 6.40 |
| m1 | 106 | mango | 15.60 |
| m2 | 105 | xbabay | 2.60 |
| m3 | 105 | xxtt | 11.60 |
| o2 | 103 | coconut | 9.20 |
| t1 | 102 | blanana | 10.30 |
| t2 | 102 | grape | 5.30 |
| t4 | 107 | xbababa | 3.60 |
+------+------+------------+---------+
查询 s_id=103 的供应商的水果价格的平均值。
mysql> SELECT AVG(f_price) AS avg_price
-> from fruits
-> where s_id = 103;
+-----------+
| avg_price |
+-----------+
| 5.700000 |
+-----------+
AVG( ) 可以与 GROUP BY 一起使用,来计算每个分组的平均值。
【例】在 fruits 表中,查询每个供应商的水果价格的平均值。SQL 语句如下:
mysql> SELECT s_id, AVG(f_price) AS avg_price
-> from fruits
-> group by s_id;
+------+-----------+
| s_id | avg_price |
+------+-----------+
| 101 | 6.200000 |
| 102 | 8.933333 |
| 103 | 5.700000 |
| 104 | 7.000000 |
| 105 | 7.466667 |
| 106 | 15.600000 |
| 107 | 3.600000 |
+------+-----------+
【提示】AVG() 函数的参数为要计算的列名称,如果要得到多个列的多个平均值,则需要在每一列上都使用 AVG() 函数。
4. MAX() 函数
MAX() 函数 返回指定列中的最大值。
【例】在 fruits 表中查找市场上价格最高的水果。
mysql> SELECT MAX(f_price) AS max_price from fruits;
+-----------+
| max_price |
+-----------+
| 15.60 |
+-----------+
MAX() 函数不仅适用于查找数值类型,也可以查找字符类型。
【例】在 fruits 表中查找 f_name 的最大值。SQL 语句如下:
mysql> SELECT MAX(f_name) from fruits;
+-------------+
| MAX(f_name) |
+-------------+
| xxxx |
+-------------+
5. MIN() 函数
MIN() 函数返回查询列中的最小值。
【例】在 fruits 表中查找市场上价格最低的水果。
mysql> SELECT MIN(f_price) AS min_price from fruits;
+-----------+
| min_price |
+-----------+
| 2.20 |
+-----------+
MIN( ) 可以与 GROUP BY 一起使用,求出每个分组的最小值。【例】在 fruits 表中查询不同供应商的提供的价格最低的水果。SQL 语句如下:
mysql> SELECT S_id , MIN(f_price) AS min_price
-> from fruits
-> GROUP BY s_id;
+------+-----------+
| S_id | min_price |
+------+-----------+
| 101 | 3.20 |
| 102 | 5.30 |
| 103 | 2.20 |
| 104 | 6.40 |
| 105 | 2.60 |
| 106 | 15.60 |
| 107 | 3.60 |
+------+-----------+
GROUP BY 关键字根据 s_id 字段对记录进行分组,然后计算出每个分组中的最小值。
MIN() 函数 MAX() 函数类似,不仅适用于查找数值类型,也可用于查找字符类型。
【注】参考于清华大学出版社《MySQL数据库应用案例课堂》2016年1月第1版