最近做了oppo的24年春招题,题目如下:
题目分析
本题要求统计各产品线在不同销售渠道的销售总额和销售数量。
输出字段:
- product_line(产品线)
- region(地区)
- channel_name(渠道名称)
- total_sale_amount(销售总额)
- total_sale_quantity(销售数量)
输出顺序:
- 先按产品线升序(product_line)
- 再按渠道ID升序(sd.channel_id)
涉及知识点:
- SQL 多表连接(JOIN)
- 分组聚合(SUM、COUNT、GROUP BY)
- 字段别名与排序(ORDER BY)
解答步骤
1. 关联销售数据、销售渠道和产品信息
- 用
sales_data
销售数据表与sales_channels
销售渠道表通过渠道ID连接,获取渠道信息。 - 再与
oppo_products
产品表通过产品ID连接,获取产品线信息。
from sales_data sd
join sales_channels sc on sc.channel_id = sd.channel_id
join oppo_products o on o.product_id = sd.product_id
2. 按渠道和产品线分组统计
- 按渠道ID、产品线、地区、渠道名称分组,统计:
- 销售总额:
sum(sale_amount)
- 销售数量:
count(*)
- 销售总额:
group by sd.channel_id, o.product_line, sc.region, sc.channel_name
3. 排序输出
- 按产品线升序、渠道ID升序排序。
order by product_line, sd.channel_id
完整代码
select o.product_line, sc.region, sc.channel_name,
sum(sale_amount) as total_sale_amount,
count(*) as total_sale_quantity
from sales_data sd
join sales_channels sc on sc.channel_id = sd.channel_id
join oppo_products o on o.product_id = sd.product_id
group by sd.channel_id, o.product_line, sc.region, sc.channel_name
order by product_line, sd.channel_id
近似题目练习推荐
- 知识点:多表连接、分组聚合、JOIN
如需更多类似题目,可在牛客网SQL练习区进行练习。