【字节跳动】生成目标月份的品类销售简报
JOIN 连接聚合函数窗口函数日期函数用户行为分析面试真题
题目描述
来源:字节跳动 SQL 面试真题
电商平台希望生成 2024 年 8 月的品类销售简报,统计各品类的订单数、去重买家数、售出件数、销售额和客单价,并按销售额生成品类排名。
数据表
product 商品表
| 字段 | 类型 | 说明 |
|---|---|---|
| product_id | INT | 商品编号,主键 |
| category | VARCHAR(32) | 商品所属品类 |
| price | DECIMAL(10,2) | 商品单价,非负 |
orders 订单表
| 字段 | 类型 | 说明 |
|---|---|---|
| order_id | BIGINT | 订单编号,主键 |
| buyer_id | INT | 买家编号 |
| order_date | DATE | 下单日期 |
order_items 订单明细表
| 字段 | 类型 | 说明 |
|---|---|---|
| order_id | BIGINT | 订单编号 |
| product_id | INT | 商品编号 |
| qty | INT | 购买数量,非负 |
题目要求
统计 2024-08-01 至 2024-08-31 期间每个品类的销售情况。每个品类输出一行,目标月没有订单的品类也要输出,并将数量和金额指标填为 0。
输出字段:
category:品类名称。orders_cnt:该品类涉及的去重订单数。buyers_cnt:涉及该品类的去重买家数。items_qty:售出件数之和。revenue:销售额,即SUM(qty * price)。avg_order_value:客单价,即销售额除以品类订单数,四舍五入保留 2 位小数;订单数为 0 时输出 0.00。rank_by_revenue:按销售额降序、订单数降序、品类名升序计算的RANK。
结果按 revenue 降序、orders_cnt 降序、category 升序排列。
数据样例
| product_idPKINT | categoryVARCHAR(32) | priceDECIMAL(10, 2) |
|---|---|---|
| 1 | Electronics | 100 |
| 2 | Electronics | 500 |
| 3 | Home | 20 |
| 4 | Home | 50 |
| 5 | Pets | 30 |
输入数据显示 5 / 5 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里