这道题目要求我们计算网店在特定时间段内的总销售额和客单价。我们要做的事情如下:

1. 确定总体问题

我们需要计算总销售额和客单价。总销售额是所有商品销售数量乘以其单价的总和,客单价是人均付费,即总销售额除以购买用户数,并保留三位小数。

2. 分析关键问题

  • 连接表:将sales_tbgoods_tb表连接起来,以便获取每个商品的单价。
  • 计算总销售额:对每个商品的销售数量乘以单价进行汇总。
  • 计算客单价:将总销售额除以购买用户数。
  • 格式化输出:将结果保留三位小数。

3. 解决每个关键问题的代码及讲解

步骤1:连接表

我们使用JOINsales_tbgoods_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