探索mysql avg函数工作原理

本文通过实例演示了 MySQL 中 AVG 函数的使用方法,包括如何计算整表平均值、按条件分组求平均值以及计算特定条件下数据的平均值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#探索mysql avg 原理
#首先建表
drop table if exists avg_test;
create table avg_test(
  company_name varchar(20),
  create_date date,
  quantity int);

#造数据
insert into avg_test value ('a','2018-08-01',23);
insert into avg_test value ('a','2018-08-01',20);
insert into avg_test value ('a','2018-08-01',8);
insert into avg_test value ('b','2018-08-01',5);
insert into avg_test value ('b','2018-08-01',20);
insert into avg_test value ('a','2018-08-02',6);
insert into avg_test value ('a','2018-08-02',9);
insert into avg_test value ('a','2018-08-02',3);

#显示数据
mysql> select * from avg_test;
+--------------+-------------+----------+
| company_name | create_date | quantity |
+--------------+-------------+----------+
| a            | 2018-08-01  |       23 |
| a            | 2018-08-01  |       20 |
| a            | 2018-08-01  |        8 |
| b            | 2018-08-01  |        5 |
| b            | 2018-08-01  |       20 |
| a            | 2018-08-02  |        6 |
| a            | 2018-08-02  |        9 |
| a            | 2018-08-02  |        3 |
+--------------+-------------+----------+


#直接用quntity的和除以记录数,得到平均值
mysql> select avg(quantity) from avg_test;
+---------------+
| avg(quantity) |
+---------------+
|       11.7500 |
+---------------+


#根据company_name分组,求和然后求平均(每天的都被求和然后除以公司个数)
mysql> select avg(quantity) from avg_test group by company_name;
+---------------+
| avg(quantity) |
+---------------+
|       11.5000 |
|       12.5000 |
+---------------+



#某个公司某一天内的所有行平均数,就是说a公司2018-8-1有多个记录,
# 把多个2018-8-1求个除以a公司2018-8-1的个数
mysql> select company_name,create_date,avg(quantity) from avg_test
    -> group by company_name,create_date;
+--------------+-------------+---------------+
| company_name | create_date | avg(quantity) |
+--------------+-------------+---------------+
| a            | 2018-08-01  |       17.0000 |
| b            | 2018-08-01  |       12.5000 |
| a            | 2018-08-02  |        6.0000 |
+--------------+-------------+---------------+


#某个公司每一天的平均,就是先把每个公司每天的和求出来,然后在把每个公司的和求出来  除以   每个公司的天数
mysql> select company_name,avg(quantity) from
    ->   (select
    ->      sum(quantity) as quantity,
    ->      company_name,
    ->      create_date
    ->    from avg_test
    ->    group by company_name,create_date) t1
    -> group by company_name;
+--------------+---------------+
| company_name | avg(quantity) |
+--------------+---------------+
| a            |       34.5000 |
| b            |       25.0000 |
+--------------+---------------+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值