如何在SQL Server中计算单元测试结果的月度平均值
计算每月单元测试平均值的正确SQL方法
原查询的问题修正
- 第一个查询中
month(Passed)错误:表中无Passed字段,应使用End date或Start date;且group by mnth是拼写错误,需改为对应月份字段或别名。 - 第二个查询中
month('EndDate')错误:引号会将字段名转为字符串,应直接引用字段;且逻辑不符合单月平均值的计算需求。
分场景给出正确SQL
场景1:计算指定月份(如2022年2月)内,每次测试运行的总测试数平均值
如果需要统计2022年2月里,每次单元测试运行的Total tests的平均值,使用以下SQL:
-- MySQL 语法(字段含空格用反引号包裹) SELECT AVG(`Total tests`) AS avg_total_tests FROM UnitTestRun WHERE MONTH(`End date`) = 2 AND YEAR(`End date`) = 2022; -- SQL Server 语法(字段含空格用方括号包裹) SELECT AVG([Total tests]) AS avg_total_tests FROM UnitTestRun WHERE MONTH([End date]) = 2 AND YEAR([End date]) = 2022;
场景2:计算所有年份中2月的测试运行次数平均值
如果需要统计历年2月的单元测试运行次数的平均值(比如2021年2月跑了5次、2022年2月跑了3次,平均为4次),使用以下SQL:
-- MySQL 语法 SELECT AVG(run_count) AS avg_monthly_runs FROM ( SELECT COUNT(*) AS run_count FROM UnitTestRun WHERE MONTH(`End date`) = 2 GROUP BY YEAR(`End date`) ) AS monthly_runs; -- SQL Server 语法 SELECT AVG(run_count) AS avg_monthly_runs FROM ( SELECT COUNT(*) AS run_count FROM UnitTestRun WHERE MONTH([End date]) = 2 GROUP BY YEAR([End date]) ) AS monthly_runs;
内容的提问来源于stack exchange,提问作者Amy Puckering
相关产品推荐
相关产品推荐

