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

如何用JOIN和GROUP BY编写SQL查询指定零件近5次工单的平均生产耗时

SQL查询修改方案

前提说明

你原有的SQL已经实现了单工单维度的聚合计算,但存在两个待优化点:

  • 缺少排序逻辑,TOP 5返回的结果不固定,无法保证是最近的5个工单,需要补充按工单时间倒序的逻辑(假设JobHeader表存在CreateTime字段存储工单创建时间,若你实际存储工单时间的字段名不同可替换)
  • 缺少外层的平均值聚合逻辑,需要将现有查询作为子查询后做平均计算

修改后SQL

SELECT 
    RegNo,
    AVG(BOMQty) AS AvgBOMQty,
    AVG(TotalTime) AS AvgTotalTime
FROM (
    SELECT TOP 5 
        JobHeader.RegNo, 
        JobHeader.BOMQty, 
        SUM(JobLabour.WorkedTime) AS TotalTime 
    FROM JobHeader 
    INNER JOIN JobLabour ON JobHeader.JobNo = JobLabour.JobNo
    WHERE JobHeader.RegNo = 'RM-BRU-0134' 
    GROUP BY JobHeader.BOMQty, JobHeader.JobNo, JobHeader.RegNo
    -- 补充排序确保取到最近5个工单,无CreateTime可按自增工单号JobHeader.JobNo DESC排序,字段可根据你实际表结构调整
    ORDER BY JobHeader.CreateTime DESC
) AS Recent5Jobs
GROUP BY RegNo

逻辑说明

  • 内层子查询和你原有逻辑一致,补充排序后稳定返回指定零件最近5个工单的单工单计划量、总耗时数据
  • 外层查询对内层返回的5条数据做聚合,分别计算BOMQty的平均值、总耗时的平均值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:57:03