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

在SQL查询结果中新增单独列展示Total_Hours的平均值

实现每行显示Total_Hours全局平均值的SQL方案

要在现有查询结果的每行右侧添加所有Total_Hours的全局平均值(本例中约为25.8),以下是两种可行的解决方案:

方法1:使用窗口函数(推荐,简洁高效)

直接在SELECT中加入窗口函数AVG(SUM(HOURS_WORKED)) OVER(),它会自动计算所有分组Total_Hours的平均值并为每行返回该值:

SELECT 
    CASE
        WHEN LEFT(WORKORDER_LOT_ID,1) = 'A' 
            THEN '20' + RIGHT(WORKORDER_LOT_ID,2)
        WHEN LEFT(WORKORDER_LOT_ID,1) = 'J' 
            THEN '30' + RIGHT(WORKORDER_LOT_ID,2)
        ELSE ''
    END AS Serial_Number,
    SUM(HOURS_WORKED) AS Total_Hours,
    AVG(SUM(HOURS_WORKED)) OVER() AS Avg_Total_Hours  -- 新增全局平均列
FROM
    LABOR_TICKET
WHERE  
    WORKORDER_BASE_ID LIKE '23765%'
    AND WORKORDER_LOT_ID IN ('A43', 'A44', 'A45', 'A46', 'A47', 'A48', 
                             'J43', 'J44', 'J45', 'J46', 'J47', 'J48')
GROUP BY 
    CASE
        WHEN LEFT(WORKORDER_LOT_ID,1) = 'A' THEN '20' + RIGHT(WORKORDER_LOT_ID,2)
        WHEN LEFT(WORKORDER_LOT_ID,1) = 'J' THEN '30' + RIGHT(WORKORDER_LOT_ID,2)
        ELSE ''
    END;

方法2:使用子查询计算全局平均

如果你的数据库不支持窗口函数,可以通过嵌套子查询先算出符合过滤条件的分组Total_Hours的平均值,再关联到主查询结果:

SELECT 
    t.Serial_Number,
    t.Total_Hours,
    (SELECT AVG(Total_Hours) FROM (
        SELECT SUM(HOURS_WORKED) AS Total_Hours
        FROM LABOR_TICKET
        WHERE WORKORDER_BASE_ID LIKE '23765%'
            AND WORKORDER_LOT_ID IN ('A43', 'A44', 'A45', 'A46', 'A47', 'A48', 
                                     'J43', 'J44', 'J45', 'J46', 'J47', 'J48')
        GROUP BY CASE
                    WHEN LEFT(WORKORDER_LOT_ID,1) = 'A' THEN '20' + RIGHT(WORKORDER_LOT_ID,2)
                    WHEN LEFT(WORKORDER_LOT_ID,1) = 'J' THEN '30' + RIGHT(WORKORDER_LOT_ID,2)
                    ELSE ''
                END
    ) AS sub) AS Avg_Total_Hours
FROM (
    -- 原查询作为子查询
    SELECT 
        CASE
            WHEN LEFT(WORKORDER_LOT_ID,1) = 'A' 
                THEN '20' + RIGHT(WORKORDER_LOT_ID,2)
            WHEN LEFT(WORKORDER_LOT_ID,1) = 'J' 
                THEN '30' + RIGHT(WORKORDER_LOT_ID,2)
            ELSE ''
        END AS Serial_Number,
        SUM(HOURS_WORKED) AS Total_Hours
    FROM
        LABOR_TICKET
    WHERE  
        WORKORDER_BASE_ID LIKE '23765%'
        AND WORKORDER_LOT_ID IN ('A43', 'A44', 'A45', 'A46', 'A47', 'A48', 
                                 'J43', 'J44', 'J45', 'J46', 'J47', 'J48')
    GROUP BY 
        CASE
            WHEN LEFT(WORKORDER_LOT_ID,1) = 'A' THEN '20' + RIGHT(WORKORDER_LOT_ID,2)
            WHEN LEFT(WORKORDER_LOT_ID,1) = 'J' THEN '30' + RIGHT(WORKORDER_LOT_ID,2)
            ELSE ''
        END
) AS t;

预期结果

执行后每行的Avg_Total_Hours列都会显示全局平均值:

Serial_Number Total_Hours Avg_Total_Hours
-------------------------------------------
2043       43.97        25.8
2044       31.99        25.8
2045       42.88        25.8
2046       29.80        25.8
2047       10.97        25.8
2048       18.02        25.8
3043       8.13         25.8
3044       38.53        25.8
3045       25.73        25.8
3046       31.99        25.8
3047       16.79        25.8
3048       11.20        25.8

原查询及结果

原SQL语句:

SELECT 
    CASE
        WHEN LEFT(WORKORDER_LOT_ID,1) = 'A' 
            THEN '20' + RIGHT(WORKORDER_LOT_ID,2)
        WHEN LEFT(WORKORDER_LOT_ID,1) = 'J' 
            THEN '30' + RIGHT(WORKORDER_LOT_ID,2)
        ELSE ''
    END AS Serial_Number,
    SUM(HOURS_WORKED) AS Total_Hours
FROM
    LABOR_TICKET
WHERE  
    WORKORDER_BASE_ID LIKE '23765%'
    AND WORKORDER_LOT_ID IN ('A43', 'A44', 'A45', 'A46', 'A47', 'A48', 
                             'J43', 'J44', 'J45', 'J46', 'J47', 'J48')
GROUP BY 
    CASE
        WHEN LEFT(WORKORDER_LOT_ID,1) = 'A' THEN '20' + RIGHT(WORKORDER_LOT_ID,2)
        WHEN LEFT(WORKORDER_LOT_ID,1) = 'J' THEN '30' + RIGHT(WORKORDER_LOT_ID,2)
        ELSE ''
    END;

原查询结果:

Serial_Number Total_Hours
---------------------------
2043       43.97
2044       31.99
2045       42.88
2046       29.80
2047       10.97
2048       18.02
3043       8.13
3044       38.53
3045       25.73
3046       31.99
3047       16.79
3048       11.20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:24:54