gpt4 book ai didi

sql - 创建加权平均值 - 删除 NULL 值的权重

转载 作者:行者123 更新时间:2023-12-02 08:21:57 25 4
gpt4 key购买 nike

所以就有了 SQL 函数 AVG(),它取列中所有值的平均值,忽略所有 NULL 值。如果需要进行加权平均值,那么他们只需使用 SUM(value * Weight)/SUM(weight) 和 Group By 子句即可。

如果我想做后者,但我的一些值是 NULL,那么我该如何告诉 SQL 忽略 SUM(weight) 函数中具有 NULL 值观察的权重?

我的另一个问题是,我一次平均取 90 个不同的列,因此我想避免为此计算创建 90 个新的权重变量。

请告诉我我是否已经说清楚了。

我使用的是 SQL Server 2005

最佳答案

您可以使用条件求和作为分母:

select sum(value*weight) / sum(case when value is not null then weight else 0 end)

如果权重总是大于 0,那么您不必担心被 0 除。只有当所有值都为 NULL 时才会发生这种情况。并且,在这种情况下,分子将为 NULL。

您也可以将其表述为:

select sum(value*weight) / sum(case when value is not null then weight end)

或如:

select sum(case when value is not null then value*weight end) / sum(case when value is not null then weight end)

这比较冗长,但非常清楚地表明您忽略了分子和分母中的 NULL 值。

关于sql - 创建加权平均值 - 删除 NULL 值的权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15164707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com