【携程】生成商品类别内销售排行榜
JOIN 连接聚合函数GROUP BY窗口函数ORDER BY排行榜面试真题
题目描述
来源:携程 SQL 面试真题
某电商平台需要生成商品销售排行榜,统计每个商品的销售总量,并计算商品在所属类别内的销量排名。
数据表
products 商品表
| 字段 | 类型 | 说明 |
|---|---|---|
| product_id | BIGINT | 商品编号 |
| name | VARCHAR | 商品名称 |
| category | VARCHAR | 商品类别 |
orders 订单表
| 字段 | 类型 | 说明 |
|---|---|---|
| order_id | BIGINT | 订单编号 |
| product_id | BIGINT | 商品编号 |
| quantity | INT | 本次订单的销售数量 |
| order_date | DATE | 下单日期 |
题目要求
- 统计每个商品在全部订单中的销售总量。
- 没有订单的商品也需要保留,销售总量记为 0。
- 在每个商品类别内,按照销售总量降序计算排名。
- 销售总量相同的商品并列排名,并按 product_id 升序稳定展示。
- 最终先按商品类别升序,再按销售总量降序,最后按 product_id 升序排列。
期望输出列
| 列名 | 说明 |
|---|---|
| product_name | 商品名称 |
| total_sales | 商品销售总量 |
| category_rank | 商品在所属类别内的销量排名 |
数据样例
| product_idPKBIGINT | nameVARCHAR(100) | categoryVARCHAR(50) |
|---|---|---|
| 1 | Product A | Category 1 |
| 2 | Product B | Category 1 |
| 3 | Product C | Category 2 |
| 4 | Product D | Category 2 |
| 5 | Product E | Category 3 |
输入数据显示 5 / 5 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里