SQL 刷题/【阿里巴巴】统计 2023 年产品销售情况
上一题下一题困难通过率 10%

【阿里巴巴】统计 2023 年产品销售情况

JOIN 连接聚合函数GROUP BY子查询窗口函数CASE WHEN日期函数ORDER BY用户行为分析营收统计面试真题

题目描述

来源:阿里巴巴 SQL 面试真题

为了制定新的产品营销方案,某电商平台需要统计 2023 年每个产品的销售额、销量、月度表现和核心购买客户年龄段。

数据表

customers 顾客表

字段类型说明
customer_idBIGINT顾客 ID,主键
customer_nameVARCHAR(50)顾客姓名
customer_emailVARCHAR(50)顾客邮箱
customer_ageINT顾客年龄

products 产品表

字段类型说明
product_idBIGINT产品 ID,主键
product_nameVARCHAR(50)产品名称
unit_priceDECIMAL(10,2)产品单价

orders 订单表

字段类型说明
order_idBIGINT订单 ID,主键
customer_idBIGINT顾客 ID
product_idBIGINT产品 ID
quantityINT购买数量
order_dateDATE订单日期

统计口径

  • 只统计 2023-01-01 至 2023-12-31 的订单。
  • 每个产品都要输出;2023 年没有订单的产品,金额和数量指标记为 0,客户年龄段记为 NULL。
  • 总销售额 = 2023 年总销量 × 产品单价。
  • 月平均销售额 = 总销售额 / 12,而不是只除以有销量的月份数。
  • 单月最高销量为该产品 2023 年各自然月销量之和的最大值。
  • 购买量最多的客户年龄段:先汇总每位客户对该产品的全年购买量,取购买量最大的客户,再映射其年龄段。
  • 多位客户年购买量相同时,取年龄更小的客户;年龄仍相同时,取 customer_id 更小的客户。

年龄段划分:1-1011-2021-3031-4041-5051-6061+

题目要求

  • 金额指标四舍五入保留 2 位小数。
  • 按总销售额降序排列。
  • 总销售额相同时,按产品 ID 升序排列。

期望输出列

列名说明
product_id产品 ID
total_sales2023 年总销售额
unit_price产品单价
total_quantity2023 年总销量
avg_monthly_sales月平均销售额
max_monthly_quantity单月最高销量
customer_age_group年购买量最多客户的年龄段

数据样例

当前运行环境
customer_idPKBIGINTcustomer_nameVARCHAR(50)customer_emailVARCHAR(50)customer_ageINT
101Alicealice@example.com25
102Bobbob@example.com35
103Carolcarol@example.com19
104Daviddavid@example.com45
105Eveeve@example.com62
输入数据显示 5 / 5
SQL 编辑器正在保存草稿...
正在加载 SQL 编辑器...

运行你的 SQL 查询后,结果将显示在这里