MySQL数据查询中如何使用集合/聚合函数查询
小编给大家分享一下MySQL数据查询中如何使用集合/聚合函数查询,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
MySQL聚合函数如下:
(1)count()函数
(2)sum()函数
(3)avg()函数
(4)max()函数
(5)min()函数
(免费学习推荐:mysql视频教程)
(1)count()函数count()函数统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数,有两种使用方法:
①count(*)计算表中总的行数,不管某列有数值或者为空值。
②count(字段名)计算指定列下总的行数,计算时将忽略空值的行。
【例1】查询customers表中总的行数,SQL语句如下:
mysql>selectcount(*)ascust_num->fromcustomers;+----------+|cust_num|+----------+|4|+----------+1rowinset(0.06sec)
由查询结果可知,count(*)返回customers表中记录的总行数,不管其值是什么。返回的总数的名称为cust_num。
【例2】查询customers表中有电子邮箱的顾客的总数,SQL语句如下:
mysql>selectcount(c_email)asemail_num->fromcustomers;+-----------+|email_num|+-----------+|3|+-----------+1rowinset(0.00sec)
上面两个例子结果不同说明两种方式在计算总数的时候对待null值的方式不同,即指定列的值为空的行被count()函数忽略,但是如果不指定列,而在count()函数中使用*,则所有记录都不忽略。
【例3】在orderitems表中,使用count()函数与group by关键字一起使用,用来计算不同分组中的记录总数。
mysql>selecto_num,count(f_id)->fromorderitems->groupbyo_num;+-------+-------------+|o_num|count(f_id)|+-------+-------------+|30001|4||30002|1||30003|1||30004|1||30005|4|+-------+-------------+5rowsinset(0.00sec)(2)sum()函数
sum是一个求总和的函数,返回指定列值的总和。
【例】在orderitems表中查询30005号订单一共购买的水果总量,SQL语句如下:
mysql>selectsum(quantity)asitems_total->fromorderitems->whereo_num=30005;+-------------+|items_total|+-------------+|30|+-------------+1rowinset(0.05sec)
sum()可以和group by一起使用,用来计算每个分组的总和。
【例】在orderitems表中,使用sum()函数统计不同订单号中订购的水果总量,SQL语句如下:
mysql>selecto_num,sum(quantity)asitems_total->fromorderitems->groupbyo_num;+-------+-------------+|o_num|items_total|+-------+-------------+|30001|33||30002|2||30003|100||30004|50||30005|30|+-------+-------------+5rowsinset(0.00sec)
sum函数在计算时,忽略值为null的行。
(3)avg()函数avg()函数通过计算返回的行数和每一列数据的和,求得指定列数据的平均值。
avg()函数使用时,其参数为要计算的列名称,如果要得到多个列的多个平均值,则需要在每一列上使用avg()函数。
【例1】在fruits表中,查询s_id=103的供应商的水果价格的平均值,SQL语句如下:
mysql>selectavg(f_price)asavg_price->fromfruits->wheres_id=103;+-----------+|avg_price|+-----------+|5.700000|+-----------+1rowinset(0.05sec)
【例2】在fruits表中,查询每一个供应商的水果价格的平均值,SQL语句如下:
mysql>selects_id,avg(f_price)asavg_price->fromfruits->groupbys_id;+------+-----------+|s_id|avg_price|+------+-----------+|104|7.000000||101|6.200000||103|5.700000||107|3.600000||102|8.933333||105|7.466667||106|15.700000|+------+-----------+7rowsinset(0.00sec)
group by 关键字根据s_id字段对记录进行分组,然后计算出每个分组的平均值,这种分组求平均值的方法非常有用。例如,求不同班级学生成绩的平均值,求不同部门工人的平均工资,求各地的年平均气温等。
(4)max()函数max()返回指定列中的最大值。
max()函数除了用来找出最大的列值或日期值之外,还能返回任意列中的最大值,包括返回字符类型的最大值。
【例1】在fruits表中查找市场上价格最高的水果值,SQL语句如下:
mysql>selectmax(f_price)asmax_pricefromfruits;+-----------+|max_price|+-----------+|15.70|+-----------+1rowinset(0.05sec)
【例2】在fruits表中查找不同供应商提供的价格最高的水果值,SQL语句如下:
mysql>selects_id,max(f_price)asmax_price->fromfruits->groupbys_id;+------+-----------+|s_id|max_price|+------+-----------+|104|7.60||101|10.20||103|9.20||107|3.60||102|11.20||105|11.60||106|15.70|+------+-----------+7rowsinset(0.00sec)
【例3】在fruits表中查找f_name的最大值,SQL语句如下:
mysql>selectmax(f_name)fromfruits;+-------------+|max(f_name)|+-------------+|xxxx|+-------------+1rowinset(0.00sec)(5)min()函数
- min()返回查询列中的最小值。
【例1】在fruits表中查找市场上价格最低的水果值,SQL语句如下:
mysql>selectmin(f_price)asmin_price->fromfruits;+-----------+|min_price|+-----------+|2.20|+-----------+1rowinset(0.00sec)
【例2】在fruits表中查找不同供应商提供的价格最低的水果汁,SQL语句如下:
mysql>selects_id,min(f_price)asmin_price->fromfruits->groupbys_id;+------+-------------+|s_id|min_price|+------+-------------+|104|6.40||101|3.20||103|2.20||107|3.60||102|5.30||105|2.60||106|15.70|+------+-------------+7rowsinset(0.00sec)
看完了这篇文章,相信你对“MySQL数据查询中如何使用集合/聚合函数查询”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。