函数 | 作用 |
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 | [email protected] | | 10002 | Stars | 333 Fromage Lane | DaLian | 116000 | ZhangBo | [email protected] | | 10003 | Netbhood | 1 Sunny Place | Qingdao | 266000 | LuoCong | NULL | | 10004 | JOTO | 829 Riverside Drive | HaiKou | 570000 | YangShan | [email protected] | +-------+----------+-----------------------+---------+--------+-----------+-------------------+
查询 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() 函数类似,不仅适用于查找数值类型,也可用于查找字符类型。