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

如何在SQL中实现Excel的Pk/Cpk计算公式?

将Excel的Pk/Cpk计算公式转换为SQL实现

首先纠正你Excel公式的笔误:正确的Cpk计算公式应该是取(USL - 平均值)和(平均值 - LSL)中的较小值,再除以3*标准差,即:

=MIN(USL-mu, mu-LSL)/(3*sigma)

实现思路

因为mu(Length列平均值)和sigma(Length列标准差)是整个数据集的统计量,需要先计算这两个值,再结合USL、LSL计算Cpk。

方案1:为每行计算对应Cpk(适用于USL/LSL每行不同的场景)

使用CTE预先统计整体的平均值和标准差,再通过交叉关联到每一行计算Cpk:

WITH data_stats AS (
    SELECT 
        AVG(Tread_Length) AS mu,
        STDEV(Tread_Length) AS sigma
    FROM TL4_Cp_Cpk
)
SELECT 
    T.Tread_Length_LSL AS LSL,
    T.Tread_Length_USL AS USL,
    T.Tread_Length AS Length,
    -- 计算Cpk值
    MIN(USL - ds.mu, ds.mu - LSL) / (3 * ds.sigma) AS Cpk
FROM TL4_Cp_Cpk T
CROSS JOIN data_stats ds;

方案2:计算全局整体Cpk(适用于USL/LSL为固定值的场景)

如果USL和LSL是全局统一的规格要求,可以直接在统计步骤中取出,一次性计算整体Cpk:

WITH data_stats AS (
    SELECT 
        AVG(Tread_Length) AS mu,
        STDEV(Tread_Length) AS sigma,
        MAX(Tread_Length_USL) AS USL, -- 假设USL为全局固定值
        MAX(Tread_Length_LSL) AS LSL  -- 假设LSL为全局固定值
    FROM TL4_Cp_Cpk
)
SELECT 
    LSL,
    USL,
    mu AS Length_Average,
    sigma AS Length_Standard_Deviation,
    MIN(USL - mu, mu - LSL) / (3 * sigma) AS Cpk
FROM data_stats;

注意事项

不同SQL方言的标准差函数可能有差异:

  • SQL Server:STDEV()(样本标准差)、STDEVP()(总体标准差)
  • MySQL:STDDEV_SAMP()(样本)、STDDEV_POP()(总体)
  • PostgreSQL:STDDEV_SAMP()(样本)、STDDEV_POP()(总体)

请根据你使用的数据库类型选择对应的函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:55:16