这道题目要求我们计算网店在特定时间段内的总销售额和客单价。我们要做的事情如下:
1. 确定总体问题
我们需要计算总销售额和客单价。总销售额是所有商品销售数量乘以其单价的总和,客单价是人均付费,即总销售额除以购买用户数,并保留三位小数。
2. 分析关键问题
- 连接表:将
sales_tb
和goods_tb
表连接起来,以便获取每个商品的单价。 - 计算总销售额:对每个商品的销售数量乘以单价进行汇总。
- 计算客单价:将总销售额除以购买用户数。
- 格式化输出:将结果保留三位小数。
3. 解决每个关键问题的代码及讲解
步骤1:连接表
我们使用JOIN
将sales_tb
和goods_tb
表连接起来:
from
sales_tb s
join
goods_tb g on s.goods_id = g.goods_id
JOIN goods_tb g ON s.goods_id = g.goods_id
:通过商品ID连接两个表,以便获取每个商品的单价。
步骤2:计算总销售额
我们使用SUM
函数对每个商品的销售数量乘以单价进行汇总:
round(sum(s.sales_num * g.goods_price), 3) as sales_total
SUM(s.sales_num * g.goods_price)
:计算每个商品的销售额。ROUND(..., 3)
:将总销售额保留三位小数。
步骤3:计算客单价
我们将总销售额除以购买用户数:
round(sum(s.sales_num * g.goods_price) / count(distinct s.user_id), 3) as per_trans
COUNT(DISTINCT s.user_id)
:计算购买用户数。ROUND(..., 3)
:将客单价保留三位小数。
完整代码
select
round(sum(s.sales_num * g.goods_price), 3) as sales_total,
round(sum(s.sales_num * g.goods_price) / count(distinct s.user_id), 3) as per_trans
from
sales_tb s
join
goods_tb g on s.goods_id = g.goods_id