select round(avg(avg1),1) as avg_amount ,round(avg(sum2-avg1),1) as avg_cost from ( select order_id,avg(total_amount)avg1,sum(price*cnt)sum2 from (select order_id,uid,total_amount,event_time,rank() over(partition by uid order by event_time) as ranking from tb_order_overall)t join tb_order_detail using(order_id) join tb_product_info using(product_id) where date_format(event_time,'%Y%m')='202110' and ranking=1 and uid not in (select uid from tb_order_overall where date_format(event_time,'%Y%m')<'202110' ) group by order_id)t1
思路就是算出10月每个人的首单,然后利用筛选去掉在10月前活跃过的用户。
然后计算他们的总额和优惠额即可。