我正在尝试获取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进行分组的,一个在整个数据集上进行分组。