sql - 计算 SQL Server 中的平均速率
问题描述
declare @table as table
(
LedgerId int,
Transaction_Type varchar(50),
Inward_qty decimal (18,3),
Inward_rate decimal (18,3)
)
insert into @table
values (1, 'Issue', 67.320, 473.66),
(2, 'Receipt', 201.290, 657.90),
(3, 'Receipt', 94.860, 473.66)
select * from @table
我想计算公式找到收据的平均费率,从剩余的问题中减去将乘以我们将拥有的值的费率,而不是总价值除以总收据数量,我们将得到一个内向费率我不知道如何做这个
公式
- 201.290 - 67.320 = 133.970(收据 - 发行)
- 133.970 * 657.900 = 88,138.863(剩余收据数量*费率)将获得价值
- 94.860 * 473.660 = 44,931.3876(receipt * rate) 将获得价值
- 88,138.863 + 44,931.3876 = 1,33,070.2506(总值)
- 133.970 + 94.860 = 228.83(总数量之和)
- 1,33,070.2506 / 228.83(总值之和)/(总量之和)= 581.5244967880086 因此581.524是平均费率
按上述计算输出布局
declare @table1 as table
(
LedgerId int,
Transaction_Type varchar(50),
Inward_qty decimal (18,3),
Inward_rate decimal (18,3)
)
insert into @table1 values(1,'Issue',67.320,473.66),(2,'Receipt',133.970,657.90),(3,'Receipt',94.860,473.66)
select * , inward_Value = Inward_qty * Inward_rate into #temp from @table1
declare @Qty decimal (18,3)
declare @value decimal (18,3)
set @Qty= (select sum(Inward_qty) from #temp where Transaction_Type ='Receipt' )
set @value =(select sum(inward_Value) from #temp where Transaction_Type ='Receipt' )
declare @Rate decimal (18,3) = @Value/@Qty
select @Rate
drop table #temp
解决方案
推荐阅读
- ios - 使用未解析的标识符“分析”Firebase Analytics
- amazon-elastic-beanstalk - terraform 总是想更新我的弹性豆茎的冷却时间
- amazon-web-services - 如何配置 Winlogbeat 以连接到 AWS elastisearch
- azure-data-factory - 使用 Azure 数据工厂进行 CRM 数据迁移
- ios - 使用 Xcode 12.0.1 在 iOS 14.0.1 上运行应用程序 - 长时间白屏
- python - 在 python 中使用 enumerate() 和 takewhile() 返回一个列表
- python-3.x - 如何在 python 中使用 ffmpeg 压缩视频?
- javascript - 通过 php 和 curl 创建一个不和谐的邀请链接?
- sql - 如何重用插入语句的值
- full-text-search - 相关性分数如何在 memsql 的全文搜索中发挥作用?