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

alt alt

题目分析

本题要求统计2024年上半年(1月1日~6月30日)各商品类别的总销售额,以及男性和女性顾客的下单人数。
输出字段

  • category_id(商品类别ID)
  • total_sales(总销售额)
  • male_customers(男性顾客数)
  • female_customers(女性顾客数)

输出顺序:题目未指定排序,默认按分组顺序输出。
涉及知识点

  • SQL 多表连接(JOIN)
  • 条件筛选(WHERE + 时间区间)
  • 分组聚合(SUM、IF)
  • 字段别名

解答步骤

1. 关联订单明细与顾客信息

  • order_details 订单明细表与 customer_info 顾客信息表通过订单ID连接,获取每个订单的顾客性别。
from order_details o
join customer_info c on o.order_id = c.order_id

2. 筛选2024年上半年的订单

  • 只保留订单日期在2024年1月1日至6月30日之间的订单。
where o.order_date between '2024-1-1' and '2024-6-30'

3. 分组统计各类别的销售额和顾客性别人数

  • 按商品类别ID分组,统计:
    • 总销售额:sum(o.order_amount)
    • 男性顾客数:sum(if(c.customer_gender ='男',1,0))
    • 女性顾客数:sum(if(c.customer_gender ='女',1,0))
group by o.category_id

完整代码

select o.category_id,
sum(o.order_amount) as total_sales,
sum(if(c.customer_gender ='男',1,0)) as male_customers,
sum(if(c.customer_gender ='女',1,0)) as female_customers
from order_details o
join customer_info c on o.order_id = c.order_id
where o.order_date between '2024-1-1' and '2024-6-30'
group by o.category_id

近似题目练习推荐

计算25岁以上和以下的用户数量

  • 知识点:分组聚合、条件统计、JOIN 如需更多类似题目,可在牛客网SQL练习区进行练习。