【问题标题】:Weighted Average Fields加权平均字段
【发布时间】:2012-06-28 05:10:45
【问题描述】:

我对在 T-SQL 中进行计算完全陌生。我想我想知道什么是加权平均值以及如何在 T-SQL 中为某个字段执行此操作?

首先,据我所知,加权平均值只是将 2 列相乘,然后除以某个值来平均。

在调用我们的一个 UDF 后,这是我认为的计算字段示例。现在,在我看来,这个字段也需要是一个加权平均......不知道从哪里开始将它变成一个加权平均。

所以这个UDF最终返回AverageCostG。我从我的角度调用 UDF,所以这里是 UDF 的胆量:

Set @AverageCostG = ((@AvgFullYear_Rent * @Months) +
                            (@PrevYearRent * @PrevYearMonths))
                            / @Term

所以在我看来,我调用上面的 UDF 来取回 @AverageCostG

CREATE View MyTestView 
AS   
select v.*, --TODO: get rid of *, that's just for testing, select actual field names
        CalculateAvgRentG(d.GrossNet, d.BaseMonthlyRent, d.ILI, d.Increase, d.Term) as AverageRent_G,
....

from SomeOtherView v

现在我需要在我的视图中使这个 AverageRent_G calc 字段也以某种方式成为加权平均值...

我需要知道他们想要加权什么还是假设嘿,这很明显.. 我不知道我需要知道什么才能为这些人做加权平均...比如我需要什么规格除了我根据 UDF 调用创建的计算之外的任何其他计算。我的意思是,除了将 2 个字段相乘并除以某个值以求平均值之外,我还必须做一些疯狂的选择连接或其他操作吗?我如何知道它们将在加权平均值中使用哪些字段以及从哪里使用?我会公开承认我对 BI T-SQL 开发完全陌生,因为我是 ASP.NET MVC C#/Architect 开发人员......并且迷失在 T-SQL 中的这种计算内容中。

我试图研究这个,但第一次需要一些基本的手,我现在头很痛,因为我不知道我需要从他们那里获得什么信息,然后该怎么做才能做到这一点计算字段加权。

【问题讨论】:

  • 我的问题可能比它应该的更长,并且可能重复了几次同样的废话,但我的头在旋转,所以请原谅我......
  • 您的客户应该能够告诉您他们希望数据如何加权,因为您可以通过几乎无限种方式对任何给定数据进行加权。这方面的一个例子可能是他们想通过通货膨胀因素来衡量这一年和上一年的“实际”收入,但如果没有具体要求,你就无法开始有意义地衡量!

标签: tsql weighted-average


【解决方案1】:

他们必须告诉您权重因子是什么。这是我的猜测。

SUM([weight] * CalculateAvgRentG(...)) / SUM([weight])

【讨论】:

    猜你喜欢
    • 2010-09-21
    • 2015-06-02
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2017-06-19
    相关资源
    最近更新 更多