最近做了京东的24年春招题,题目如下:

alt alt

题目分析

本题要求统计2024年7月各品牌的订单退货率和客户平均满意度分数。
输出字段

  • brand_id(品牌ID)
  • brand_name(品牌名称)
  • return_rate_July_2024(2024年7月退货率,保留两位小数)
  • average_customer_satisfaction_score(客户平均满意度分数,保留两位小数)

输出顺序:按品牌ID升序(brand_id asc)。
涉及知识点

  • SQL 多表连接(JOIN)
  • 条件筛选(WHERE + month())
  • 分组聚合(SUM、COUNT、ROUND)
  • 字段别名与排序(ORDER BY)

解答步骤

1. 关联品牌、订单和客户反馈表

  • brand_info 品牌表与 sales_orders 订单表通过品牌ID连接,获取每个品牌的订单。
  • 再与 customer_feedback 客户反馈表通过订单ID连接,获取每个订单的客户满意度分数。
from brand_info b
join sales_orders s on b.brand_id = s.brand_id
join customer_feedback c on c.order_id = s.order_id

2. 筛选2024年7月的订单

  • 只保留订单日期在7月的订单(month(s.order_date) = 7)。
where month(s.order_date) = 7

3. 计算退货率和平均满意度

  • 退货率:sum(s.return_status)/count(*),其中 return_status 退货为1,未退货为0,直接求和后除以订单数即为退货率。
  • 平均满意度:sum(c.customer_satisfaction_score)/count(*),即所有订单的满意度分数平均值。
  • ROUND(..., 2) 保留两位小数。
round(sum(s.return_status)/count(*),2) as return_rate_July_2024,
round(sum(c.customer_satisfaction_score)/count(*),2) as average_customer_satisfaction_score

4. 分组与排序

  • 按品牌ID和品牌名称分组,输出所需字段。
  • 按品牌ID升序排序。
group by b.brand_id, b.brand_name
order by brand_id asc

完整代码

select b.brand_id, b.brand_name,
round(sum(s.return_status)/count(*),2) as return_rate_July_2024,
round(sum(c.customer_satisfaction_score)/count(*),2) as average_customer_satisfaction_score
from brand_info b
join sales_orders s on b.brand_id = s.brand_id
join customer_feedback c on c.order_id = s.order_id
where month(s.order_date) = 7
group by b.brand_id, b.brand_name
order by brand_id asc

近似题目练习推荐

电商平台想要了解不同商品在不同月份的销售趋势

  • 知识点:分组聚合、条件筛选、JOIN

用户订单信息查询

  • 知识点:聚合函数、分组统计

如需更多类似题目,可在牛客网SQL练习区进行练习。