Mysql数据库(五):详细,对新手非常友好

使用聚合函数进行查询

有时候并不需要返回实际表中的数据,而只是对数据进行总结。Mysql提供一些查询功能,可以对获取的数据进行分析和报告。这些函数的功能有:计算数据表中记录行数的总数、计算某个字段列下数据的总和,以及计算表总中某个字段下的最大值、最小值或者平均值。

函数作用
AVG()返回某列的平均值
COUNT()返回某列的行数
MAX()返回某列的最大值
MIN()返回某列的最小值
SUM()返回某列值的和

先建一张表customers,建议用数据库可视化工具Navicat for mysql,这样既不会出错,效率也很高;
在这里插入图片描述

插入数据sql语句,后面省略:

INSERT INTO `customers` (
`c_id`, `c_name`, `c_address`, `c_city`, `c_zip`, `c_contact`, `c_email`) 
VALUES ('10004', 'JOTO', '829 Riverside Drive', 'Haikou', '570000', 'YangShan', 'sam@hotmail.com')

1.COUNT函数

  • 查询customers表中总的行数,sql语句如下
SELECT COUNT(*) AS cust_num FROM customers;

在这里插入图片描述
根据查询结果,我们了解到,无论其值是什么,返回的总数名称为cust_num,它是一个别名。

  • 查询customers表中电子邮箱的客户的总数,SQL语句如下:
SELECT COUNT(c_email) AS email_num from customers;

在这里插入图片描述

再建一张表:orderitems

在这里插入图片描述

INSERT INTO `orderitems` (
`o_num`, `o_item`, `f_id`, `quantity`, `item_price`) 
VALUES ('30005', '4', 'm1', '5', '14.99')
...
  • 查询在orderitems表中,使用COUNT()函数统计不同的订单号中订购的水果的种类
SELECT o_num,COUNT(f_id) from orderitems group by o_num;

在这里插入图片描述

2.SUM函数

sum是一个求的函数,返回指定列的值的总和

  • 在orderitems表中查询30005号订单一共购买的水果的总量,sql语句如下:
SELECT SUM(quantity) AS items_total from orderitems where o_num=30005;

在这里插入图片描述
where子句指定查询的订单号为30005

  • 在orderitems表中,使用SUM()函数统计不同订单号中订购的水果的总量,sql语句如下
SELECT o_num,SUM(quantity) as items_total from orderitems group by o_num;

在这里插入图片描述
==sum函数在计算的时候,会忽略值为NULL的值

3.AVG函数

AVG函数通过计算返回的行数和每一列数据的和,求得指定列数据的平均值。

  • 在fruits表中,查询s_id=103的供应商的水果价格的平均值,sql语句如下:
SELECT AVG(f_price) as avg_price from fruits where s_id=103;

在这里插入图片描述
在此查询需求中,查询语句增加了一个WHERE子句,并且添加了过滤条件,只查询s_id=103的记录的f_price。因此。可以通过AVG()函数计算的结果只是指定的功用上水果的平均值。

  • 在fruits表中,查询每一个供应商的水果价格的平均值,SQL语句如下:
SELECT s_id,AVG(f_price) as avg_price from fruits group by s_id;

在这里插入图片描述
Group by关键字根据s_id字段进行分组,然后计算每个分组的平均值,这种分组求平均值的方法非常有用,例如:求不同班级学生成绩的偶行军之,求不停部门工人的平均工资,求各地的年平均气温等等。

AVG函数使用时,其参数为要计算的列名称,如果要得到多个列的多个平均值,则需要在每一个列上使用AVG函数。

MAX()函数

MAX函数返回指定列中的最大值

  • 在fruits表中查找市场上价格最高的水果值,sql语句如下:
select max(f_price)  as max_price from fruits;

在这里插入图片描述
从结果中我们可以看出,max函数查询出了价格f_price的最大值15.7.
max函数也可以和group by关键字一起使用,求每个分组中的最大值。

  • 在fruits表中查找不同供应商提供的价格最高的水果值
select s_id,max(f_price) as max_price from fruits group by s_id;

在这里插入图片描述
根据结果我们可以看出,group by关键字根据s——id 字段对应记录进行分组,然后计算出分组中的最大值。

max函数不仅可以查找数值类型,也可以用于字符类型。

  • 在fruits表中查找f_name的最大值,sql语句使用如下:
select max(f_name) from fruits; 

在这里插入图片描述
由查询出来的结果表我们可以得出,max函数根据字母的大小进行判断,并返回最大值

5.MIN函数

MIn返回查询列中的最小值

  • 在fruits表中查询市场上价格最低的水果值,sql语句如下:
select min(f_price) as min_price from fruits;

在这里插入图片描述
由结果我们可以看出,MIN函数查询出lf_price字段的最小值2.20

  • 在fruits表中查找不同供应商提供的价格最低的水果值
select s_id ,min(f_price) as min_price from fruits group by s_id;

在这里插入图片描述

下篇继续------------连接查询

回顾前四篇:

Mysql数据库(一):详细,对新手非常友好

Mysql数据库(二):详细,对新手非常友好

Mysql数据库(三):详细,对新手非常友好

Mysql数据库(四):详细,对新手非常友好

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值