sql - 在 SQL Server 中计算平均值
问题描述
我想做一些非常简单的事情,但我显然错过了一个技巧!我想获得平均值的平均值,但我想包括原始平均值计算的权重。我将使用我正在尝试做的精简版本。
所以假设我有下表
Product date RunInterval AvgDuration_secs Executions
--------------------------------------------------------------------
A 29/12/19 1 1 100
A 29/12/19 2 2 10
我想知道的是产品 A 在 29/12 的平均持续时间。到目前为止,我尝试过的所有事情都给了我 1.5 秒的平均值,即它将 1 秒和 2 秒的持续时间 (3) 相加并除以行数 (2) 得到 1.5。我想要得到的是平均值,但考虑到它运行的频率是多少,所以 (100*1) + (10*2) / 110 = 1.09 秒。我已经尝试了 GROUP BY 语句和 CURSORS 的各种尝试,但没有到达那里。
我显然是以错误的方式处理它!欢迎任何帮助:-)
解决方案
你可以这样做:
select product, date,
round(1.0 * sum([Executions] * [AvgDuration_secs]) / sum([Executions]), 2) result
from tablename
group by product, date
我不确定你是想要RunInterval
还是AvgDuration_secs
第一笔。
请参阅演示。
结果:
> product | date | result
> :------ | :---------| :-----
> A | 29/12/2019| 1.09
推荐阅读
- swift - UILongPressGestureRecognizer 未运行操作或未识别尽管已添加到视图 GestureRecognizers 并已配置
- groovy - 更新 Jmeter Json 请求
- java - 将 3 个数字从小到大排序
- google-maps - Google Place Details 不返回照片数组
- c# - C# CodeDom“as”和“is”关键字功能
- redux - 如何在 Chrome Inspector 窗口中配置 Redux DevTools,以便元素堆叠与并排?
- javascript - HTML modals 的问题,不显示
- arrays - 扫描二叉搜索树与数组
- visual-studio - 如何在 TeamCity 中使用 VisualStudio SignAndroidPackage?
- sftp - MobaXterm 启动 SCP 而不是 SFTP