版权声明:欢迎评论,指点,交流! https://blog.csdn.net/qq_15230053/article/details/81631979
#探索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 | +--------------+---------------+