如何在SQL Server 2017 Express中使用stdev()



我正在尝试获取mcw_nm列的stdev,但我希望它是bladeid bladeid a cold not 的stdev。但是在variance_blade_mcw中,我需要将其分组为bladeid。我已经尝试过((,但是我得到了这个错误:

列'eng.dbo.mcw_bcl_wedge.mcw_nm'在选择列表中无效,因为它不包含在汇总函数中,或者由子句中的组中包含。

有人可以帮我吗?以下是我的查询。

PS :我很难解释问题,所以请忍受我。让我知道您是否有澄清!非常感谢!

SELECT 
    BladeID,
    Total_Sigma_MCW = STDEV(MCW_NM) OVER (), 
    CountD_Blade = COUNT(BLADEID) OVER (), 
    Variance_Blade_MCW = SQUARE(STDEV(MCW_NM))
FROM 
    ENG.DBO.MCW_BCL_WEDGE 
WHERE 
    TESTDATE > GETDATE() - 6
GROUP BY 
    BLADEID 
HAVING
    COUNT(BladeID) >= 5000

我目前无法访问MSSQL,但这可能起作用。内部查询将返回每个叶片1行,我认为是您想要的聚合物。问题是窗口函数总是返回源中每一行的1行,因此外部查询使此功能变平。

SELECT DISTINCT
    BladeID,
    Total_Sigma_MCW = STDEV(MCW_NM) OVER (PARTITION BY 1),
    Variance_Blade_MCW, 
    CountD_Blade,
FROM
(
SELECT 
    BladeID,
    MCW_NM, 
    CountD_Blade = COUNT() OVER (PARTITION BY BladeID), 
    Variance_Blade_MCW = SQUARE(STDEV(MCW_NM) OVER (PARTITION BY BLADEID))
FROM 
    ENG.DBO.MCW_BCL_WEDGE 
WHERE 
    TESTDATE > GETDATE() - 6
) q
WHERE CountD_Blade >= 5000

创建两个查询可能更有效,一个查询是通过BladeID进行分组的,一个在整个数据集上进行分组。

相关内容

  • 没有找到相关文章