计算日维度STDEV平均值的SQL代码错误排查
SQL代码错误说明
- 子查询缺失必填别名:你使用的SQL Server环境要求FROM子句后跟随的子查询必须定义别名,当前内层按日计算STDEV的子查询没有设置别名,会直接触发语法报错。
- 末尾无效排序逻辑:外层查询的作用是对每日STDEV结果求平均值,最终仅返回单行汇总值,末尾的
ORDER BY X_MESURE完全没有实际作用,且由于外层SELECT没有查询X_MESURE字段,还会触发字段不存在的报错。 - 日期范围过滤逻辑缺失:你仅设置了起始日期
>= '2022-01-01',没有配置范围的结束日期边界,会将起始日期之后的所有数据全部纳入计算,和你「取一段日期范围统计」的需求不符。
修正后可运行代码
SELECT avg(X_MESURE) AS AVG_MESURE FROM ( SELECT cast(DATE_PEREMPTION as date) as DATE_PEREMPTION, ROUND(STDEV(MESURE),3) AS X_MESURE FROM [MECMAS].[dbo].[T_Batch] B Join [MECMAS].[DBO].[TR_BATCH_MP] MP ON MP.ID_BATCH = B.ID Join [mecmas].[dbo].[T_DONNEES] d ON d.ID = MP.ID_DONNEES WHERE B.DATE_PEREMPTION >= '2022-01-01 00:00:00.00' -- 可根据实际需求修改结束日期 AND B.DATE_PEREMPTION < '2023-01-01 00:00:00.00' AND NAME='AGUA' group by cast(DATE_PEREMPTION as date) -- 为子查询添加必填别名 ) t
内容的提问来源于stack exchange,提问作者Colatra93
相关产品推荐
相关产品推荐

