WITH t1 AS (
    SELECT
        a.order_id,
        b.uid,
        a.price * a.cnt AS less_amount,
        b.event_time,
        b.total_amount
    FROM tb_order_detail a
    LEFT JOIN tb_order_overall b ON a.order_id = b.order_id
    LEFT JOIN tb_product_info c ON a.product_id = c.product_id
    WHERE status = 1
),
t2 AS (
    SELECT uid,
           min(event_time) as min_time
    FROM t1
    GROUP BY uid
    having DATE(min_time) BETWEEN '2021-10-01' AND '2021-10-31'
),
t3 AS (
    SELECT t1.uid,
           t1.less_amount,
           t1.total_amount,
           t1.event_time,
           t2.min_time
    FROM t1
    LEFT JOIN t2 ON t1.uid = t2.uid
    HAVING t1.event_time = t2.min_time
),
t4 AS (SELECT uid,
              max(total_amount) AS max_total_amount,
              sum(less_amount) - max(total_amount) AS profit
       FROM t3
       GROUP BY uid
),
t5 AS (
    SELECT ROUND(avg(max_total_amount),1) AS avg_amount,
           ROUND(avg(profit),1)     AS avg_cost
    FROM t4
)
SELECT * FROM t5;

# 这道题目的关键在于订单总价(即total_amount)的平均值要找对!