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)的平均值要找对!