You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用多表SELECT查询统计指定用户指定时段派送包裹总数

解决指定用户派送包裹数量统计的SQL查询问题

没问题,我来帮你搞定这个统计需求!咱们需要把三张表关联起来,精准筛选出John的派送数据并计算总数。

核心思路

  1. 通过orders_drivers表关联用户(user_id=1)和他使用的所有车牌(plate_id)
  2. 再关联orders表,获取这些车牌在指定日期范围内的派送记录
  3. 对package_amount求和得到总包裹数

完整SQL查询语句

SELECT SUM(o.package_amount) AS total_delivered_packages
FROM orders_drivers od
JOIN orders o ON od.plate_id = o.plate_id
-- 如果不需要用到plates表的字段,其实可以不用关联它;如果需要显示车牌名称,可以加上下面这行
-- JOIN plates p ON od.plate_id = p.plate_id
WHERE od.user_id = 1
  AND o.delivery_date BETWEEN '2018-02-01' AND '2018-02-28';

语句说明

  • JOIN orders_drivers od ON od.plate_id = o.plate_id:把用户和他驾驶的车辆绑定,确保只统计John使用过的车辆的派送记录
  • WHERE od.user_id = 1:锁定目标用户John
  • o.delivery_date BETWEEN '2018-02-01' AND '2018-02-28':筛选2018年2月的派送数据
  • SUM(o.package_amount):对符合条件的所有包裹数量求和,并用AS给结果起一个清晰的别名

如果需要同时显示对应的车牌名称,可以取消注释JOIN plates那一行,然后在SELECT里加上p.plate_name,比如:

SELECT p.plate_name, SUM(o.package_amount) AS total_delivered_packages
FROM orders_drivers od
JOIN orders o ON od.plate_id = o.plate_id
JOIN plates p ON od.plate_id = p.plate_id
WHERE od.user_id = 1
  AND o.delivery_date BETWEEN '2018-02-01' AND '2018-02-28'
GROUP BY p.plate_name;

这样就能看到John每辆车在2月的派送包裹数啦。

内容的提问来源于stack exchange,提问作者hatasu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:41:30