问题:请计算2021年10月商城里所有新用户的首单平均交易金额(客单价)和平均获客成本(保留一位小数)[8分] 注:1订单的优惠金额 =订单明细里的该订单各商品单价x数量之和)订单总表里的(订单总金额) 2SQL必须写出必要的注释 解释: 2021年10月有3个新用户, 102的首单为301002,订单金额为235,商品总金额为85+180=265,优惠金额为30; 101的首单为301003,订单金额为300,商品总金额为140+180=320,优惠金额为20: 104的首单为301005,订单金额为160,商品总金额为180,优惠金额为20: 平均首单客单价为(235+300+160)/3=231.7, 平均获客成本为(30+20+20)/3=23.3
时间: 2024-03-19 09:45:45 浏览: 46
根据问题描述,可以得到以下 SQL 语句:
```
-- 计算2021年10月商城里所有新用户的首单平均交易金额和平均获客成本
SELECT
ROUND(AVG(o.order_amount), 1) AS avg_order_amount, -- 平均客单价
ROUND(AVG(o.discount_amount), 1) AS avg_customer_acquisition_cost -- 平均获客成本
FROM
orders o
JOIN (
SELECT MIN(order_time) AS first_order_time, user_id
FROM orders
WHERE DATE_FORMAT(order_time, '%Y-%m') = '2021-10' AND is_new_user = 1
GROUP BY user_id
) t ON o.user_id = t.user_id AND o.order_time = t.first_order_time;
```
说明:
- `DATE_FORMAT(order_time, '%Y-%m') = '2021-10'` 用于筛选出 2021 年 10 月的订单;
- `is_new_user = 1` 用于筛选出新用户;
- `MIN(order_time) AS first_order_time` 用于计算每个用户的首单时间;
- `JOIN` 用于将订单表和首单用户表连接;
- `o.order_amount` 用于计算订单金额;
- `o.discount_amount` 用于计算优惠金额;
- `AVG()` 用于计算平均客单价和平均获客成本;
- `ROUND(..., 1)` 用于保留一位小数。
阅读全文