1、确定题意:
①2021年10月商城里所有新用户:首先确定每个用户的“初次下单时间”,然后判断“初次下单时间”是否在2021年10月;
②首单平均交易金额(客单价)和平均获客成本(保留一位小数):在判断了“新用户”之后,按照题目给的计算公式计算出结果之后,保留一位小数。

2、实操:
①首先,创建一张用户初次下单表
with first_register
as(
    select uid,
    min(event_time) as min_date
    from tb_order_overall
    group by 1
)

③最后,基于计算的 “每位用户首单总交易金额” & “总获客成本”,计算其 “总值的平均值”。
select round(avg(t3.total_amount),1) as avg_amount,
round(avg(t3.cost),1) as avg_cost

from(

②其次,计算出 “符合条件” 的 “每位用户首单<注:首单已经筛选好>总交易金额”(total_amount) & “总获客成本” (该订单各商品单价×数量之和-订单总金额)<注意:如果用sum(t2.total_amount),那么就会将1位用户所有的total_amount汇总,但若使用avg(t2.total_amount)就符合条件。(注意:由于t1订单表&t2产品表联系到一起,因此订单表会存在多行数据,所以此处的数据计算要注意 “重复数据” 的问题)>
    select first_register.uid,
    avg(t2.total_amount) as total_amount,
    sum(t1.price * t1.cnt) - avg(t2.total_amount) as cost

    from tb_order_detail as t1
    left join tb_order_overall as t2
    on t1.order_id = t2.order_id
    left join first_register
	【注意:t2为所有用户的下单时间表,first_register为所有用户的初次下单时间表,2者下单日期&用户相关联,t2表对应的first_register就会存在空值】
    on t2.event_time = first_register.min_date 
    and t2.uid = first_register.uid
	
	【注意:条件筛选中first_register.min_date is not null,仅仅会筛选出 “初次下单时间” 的用户,当一个用户有多条下单记录时,也只会展示 “初次下单时间” 的用户信息,其余信息直接排除;配合2021-10,就能筛选出 “初次下单时间” 为 “10月份” 的用户信息】
    where date_format(t2.event_time,'%Y-%m') = '2021-10'
    and first_register.min_date is not null
    group by 1


) as t3