1.count()

count()函数统计数据表中的行数,或根据查询结果统计列中包含的行数

使用方法:

  • (1)count(*) 计算表中总的行数,不管表中某列有值或是空值
  • (2)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    | LMing@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表中总的行数:

mysql> select count(*) as total from customers;
+-------+
| total |
+-------+
|     4 |
+-------+


查询多少人有电子邮箱

mysql> select count(c_email) as c_mail_num from customers;
+------------+
| c_mail_num |
+------------+
|          3 |
+------------+

#########################################################################

mysql> select * from orderitems;
+-------+--------+------+----------+------------+
| o_num | o_item | f_id | quantity | item_price |
+-------+--------+------+----------+------------+
| 30001 |      1 | a1   |       10 |       5.20 |
| 30001 |      2 | b2   |        3 |       7.60 |
| 30001 |      3 | bs1  |        5 |      11.20 |
| 30001 |      4 | bs2  |       15 |       9.20 |
| 30002 |      1 | b3   |        2 |      20.00 |
| 30003 |      1 | c0   |      100 |      10.00 |
| 30004 |      1 | o2   |       50 |       2.50 |
| 30005 |      1 | c0   |        5 |      10.00 |
| 30005 |      2 | b1   |       10 |       8.99 |
| 30005 |      3 | a2   |       10 |       2.20 |
| 30005 |      4 | m1   |        5 |      14.99 |
+-------+--------+------+----------+------------+

使用count函数统计不同订单号中订购的水果种类

mysql> select o_num,count(f_id) as total from orderitems group by o_num;
+-------+-------+
| o_num | total |
+-------+-------+
| 30001 |     4 |
| 30002 |     1 |
| 30003 |     1 |
| 30004 |     1 |
| 30005 |     4 |
+-------+-------+
group by先按关键字进行分组,然后在再计算每个分组中的总记录数

2.sum()

注意:sum在进行计算的时候,将忽略行为null的值

求合函数,返回指定列值的总和

mysql> select * from orderitems;
+-------+--------+------+----------+------------+
| o_num | o_item | f_id | quantity | item_price |
+-------+--------+------+----------+------------+
| 30001 |      1 | a1   |       10 |       5.20 |
| 30001 |      2 | b2   |        3 |       7.60 |
| 30001 |      3 | bs1  |        5 |      11.20 |
| 30001 |      4 | bs2  |       15 |       9.20 |
| 30002 |      1 | b3   |        2 |      20.00 |
| 30003 |      1 | c0   |      100 |      10.00 |
| 30004 |      1 | o2   |       50 |       2.50 |
| 30005 |      1 | c0   |        5 |      10.00 |
| 30005 |      2 | b1   |       10 |       8.99 |
| 30005 |      3 | a2   |       10 |       2.20 |
| 30005 |      4 | m1   |        5 |      14.99 |
+-------+--------+------+----------+------------+

查询30005号订单一共购买的水果总量

mysql> select sum(quantity) as total from orderitems where o_num=30005;
+-------+
| total |
+-------+
|    30 |
+-------+

sum与group by连用,计算每个分组的总和

使用sum函数统计不同订单号订购的水果总量

mysql> select o_num,sum(quantity) as total from orderitems group by o_num;
+-------+-------+
| o_num | total |
+-------+-------+
| 30001 |    33 |
| 30002 |     2 |
| 30003 |   100 |
| 30004 |    50 |
| 30005 |    30 |
+-------+-------+

group by按订单号进行分组,sum统计每个分组中订购水果的总量

3.avg()

通过返回的行数和每一行数据的和,求指定列数据平均住

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.70 |
| m2   |  105 | xbabay     |    2.60 |
| m3   |  105 | xxtt       |   11.60 |
| o2   |  103 | coconut    |    9.20 |
| t1   |  102 | banana     |   10.30 |
| t2   |  102 | grape      |    5.30 |
| t4   |  107 | xbababa    |    3.60 |
+------+------+------------+---------+

查询s_id=103的供应商的水果价格的平均值

mysql> select avg(f_price) from fruits where s_id=103;
+-----------+
| avg_price |
+-----------+
|  5.700000 |
+-----------+

avg与group by连用,计算每个分组的平均值

查询每一个供应商水果价格的平均值

mysql> select s_id,avg(f_price) as fruit_price from fruits group by s_id;
+------+-------------+
| s_id | fruit_price |
+------+-------------+
|  101 |    6.200000 |
|  102 |    8.933333 |
|  103 |    5.700000 |
|  104 |    7.000000 |
|  105 |    7.466667 |
|  106 |   15.700000 |
|  107 |    3.600000 |
+------+-------------+

4.max()

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.70 |
| m2   |  105 | xbabay     |    2.60 |
| m3   |  105 | xxtt       |   11.60 |
| o2   |  103 | coconut    |    9.20 |
| t1   |  102 | banana     |   10.30 |
| t2   |  102 | grape      |    5.30 |
| t4   |  107 | xbababa    |    3.60 |
+------+------+------------+---------+

查询最贵的水果是啥

mysql> select f_name,max(f_price) from fruits;
+--------+--------------+
| f_name | max(f_price) |
+--------+--------------+
| apple  |        15.70 |
+--------+--------------+

max与group by连用,求每个分组的最大值

查询不同供应商提供的最贵的水果多少钱

mysql> select s_id,f_name,max(f_price) as total from fruits group by s_id;
+------+---------+-------+
| s_id | f_name  | total |
+------+---------+-------+
|  101 | apple   | 10.20 |
|  102 | orange  | 11.20 |
|  103 | apricot |  9.20 |
|  104 | berry   |  7.60 |
|  105 | melon   | 11.60 |
|  106 | mango   | 15.70 |
|  107 | xxxx    |  3.60 |
+------+---------+-------+

max函数还可以对字符类型进行计算

在fruits表中查找f_name最大值

mysql> select max(f_name) from fruits;
+-------------+
| max(f_name) |
+-------------+
| xxxx        |
+-------------+

提示:max函数除了用来找出最大的列值或日期值之外,还可返回任意列中的最大值,包括返回字符类型的最大值。在对字符类型数据进行比较时,按照字符的ASCII码值大小比较,从a~z,a的ASCII码最小,z的最大。在比较时,先比较第一个字母,如果相等,继续比较下一个字符,一直等到两个字符不相等或者字符结束为止。例如,'b'与't'进行比较时,'t'为最大值,'bcd'与'bca'进行比较,'bcd'为最大值。

5.min()

查询列中的最小值

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.70 |
| m2   |  105 | xbabay     |    2.60 |
| m3   |  105 | xxtt       |   11.60 |
| o2   |  103 | coconut    |    9.20 |
| t1   |  102 | banana     |   10.30 |
| t2   |  102 | grape      |    5.30 |
| t4   |  107 | xbababa    |    3.60 |
+------+------+------------+---------+

查询市场上最便宜的水果

mysql> select f_name,min(f_price) from fruits ;
+--------+--------------+
| f_name | min(f_price) |
+--------+--------------+
| apple  |         2.20 |
+--------+--------------+

min与group by连用,计算每个供应商最便宜的水果是啥

mysql> select s_id,f_name,min(f_price) as min_price from fruits group by s_id;
+------+---------+-----------+
| s_id | f_name  | min_price |
+------+---------+-----------+
|  101 | apple   |      3.20 |
|  102 | orange  |      5.30 |
|  103 | apricot |      2.20 |
|  104 | berry   |      6.40 |
|  105 | melon   |      2.60 |
|  106 | mango   |     15.70 |
|  107 | xxxx    |      3.60 |
+------+---------+-----------+


min也能用来查询字符类型,和上边的max一样

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐