最近做了京东的24年春招题,题目如下:
题目分析
本题要求统计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练习区进行练习。