如何在MySQL中汇总一张表格,以根据多个列获得3个月的平均收入?

问题描述

我需要一些帮助。我试图在MysqL中运行查询,该查询将汇总包含收入的表。我面临的挑战是,在表中我们按月,按客户和地区列出了信息,并且并非所有客户都有每月的收入记录,我要完成的工作是对表进行汇总,按客户和地区,并获取每个客户最近3个月的平均收入。

样品表

sample Table

预期结果

Result

这怎么完成?

解决方法

一个选项使用MySQL 8.0中提供的窗口函数:

select customer_name,region,avg(revenue) avg_revenue_last_3_months
from (
    select 
        t.*,row_number() over(partition by customer_name,region order by month desc) rn
    from mytable t
) t
where rn <= 3
group by customer_name,region