关联取月份最近6个月的数据,按id,月份分组汇总交易额就可以了
跟1一样,就是按交易总额排序取前100
1.
select ao.id,ao.state_date,sum(ao.amount) amount from tab_order ao
left join tab_order so on so.id = ao.id and so.state_date between ao.state_date-5 and ao.state_date
group by ao.id,ao.state_date
2.
select * from
(select ao.id,ao.state_date,sum(ao.amount) amount from tab_order ao
left join tab_order so on so.id = ao.id and so.state_date between ao.state_date-3 and ao.state_date
group by ao.id,ao.state_date
order by amount desc
) limit 100