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

题目分析

本题要求统计每位快递员在7月的总收入,总收入包括基本工资和7月的配送提成。
输出字段

  • courier_id(快递员ID)
  • courier_name(快递员姓名)
  • total_income(总收入)

输出顺序:按快递员ID升序(order by courier_id)。
涉及知识点

  • SQL 多表连接(JOIN)
  • 子查询与分组聚合(SUM、GROUP BY)
  • 条件筛选(WHERE + month())
  • 字段别名与排序(ORDER BY)
  • 算术运算

解答步骤

1. 统计每位快递员7月的配送提成

  • deliveries_info 配送信息表中,筛选7月的配送记录,按快递员ID分组,统计每人7月的配送提成总额。
select courier_id, sum(delivery_fee) as income 
from deliveries_info  
where month(delivery_date) = 7
group by month(delivery_date), courier_id

2. 关联快递员信息

  • 将上述子查询结果与 couriers_info 快递员信息表通过快递员ID连接,获取快递员姓名和基本工资。
from couriers_info c
join ( -- 上述子查询 ) d on d.courier_id = c.courier_id

3. 计算总收入

  • 总收入 = 基本工资 + 7月配送提成。
c.base_salary + d.income as total_income

4. 排序输出

  • 按快递员ID升序排序。
order by courier_id

完整代码

select c.courier_id, c.courier_name,
c.base_salary + d.income as total_income
from couriers_info c
join (
    select courier_id, sum(delivery_fee) as income 
    from deliveries_info  
    where month(delivery_date) = 7
    group by month(delivery_date), courier_id
) d on d.courier_id = c.courier_id
order by courier_id

近似题目练习推荐

最受欢迎的top3课程

  • 知识点:SQL连接、时间差计算、分组、聚合函数、排序、限制输出

物流公司想要分析快递小哥的薪资构成和绩效情况

  • 知识点:SQL连接、时间计算、分组、聚合函数、排序

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