sql - 如何在不分组的情况下获得一列窗口平均值?
问题描述
我想添加一个新列,它是现有列的平均值,我不会在新列中显示每一行中相同的平均数。
桌子就像
我想要的是:
我知道用 Excel 做起来超级容易,但我想用 SQL 做,我该怎么办?
解决方案
您可以使用OVER
窗口函数来计算平均值:
declare @t table (
Id int primary key,
Sales money not null
);
insert into @t (Id, Sales)
values
(1,34),
(2,23),
(3,543),
(4,234);
select t.Id, t.Sales, avg(t.Sales) over() as [Average]
from @t t;
如果您需要按任何标准对平均值进行分组,请将它们放入OVER(partition by ...)
.
推荐阅读
- html - Electron 不加载 html body 但加载 head
- javascript - 在 R Shiny 的 Rhandsontable 中使用 manualMove 后获取 afterRowMove 回调
- facebook - 获取“页面公共内容访问需要应用程序秘密证明或应用程序令牌”
- html - 如何让 VSCode 读取我的导航代码?
- reactjs - 在 react typescript 组件上实现 RouteComponentProps 时使用什么类型
- javascript - 在从客户端 Jquery Laravel 上传之前预先调整多个图像的大小
- kotlin - 动态更新 tornadofx 中的折线点
- r - 一次构建(或删除)ggplot facet 的面板
- julia - 如何按索引元素的 N 数组访问多维数组?
- node.js - NodeJs 和 Jest:模拟 Mongoose 多次调用 find().sort().limit()