gpt4 book ai didi

postgresql - Postgres 平均计算忽略空值

转载 作者:行者123 更新时间:2023-11-29 11:32:34 27 4
gpt4 key购买 nike

这是我的 postgres 表

 name   | revenue   
--------+---------
John | 100
Will | 100
Tom | 100
Susan | 100
Ben |
(5 rows)

在这里,当我计算平均收入时,它返回 100,这显然不是这种情况,总和/计数,即 400/5 是 80。这种行为是传统设计造成的,还是我忽略了重点?

我知道我可以 change null to 0 and process as usual .但是,鉴于默认行为,这是计算平均值的有意且首选的方式。

最佳答案

这既是有意的,也是完全合乎逻辑的。请记住,NULL 表示该值为未知

例如,它可能表示将在未来某个日期填写的值。如果 future 的值(value)是 0,那么平均值就是 400/5 = 80,如您所说;但是如果 future 的值是 200,则平均值将是 600/5 = 120。我们现在所能知道的是,已知 值的平均值是 400/4 = 100

如果您确实知道该项目的收入为 0,则应在该列中存储 0。如果您不知道该项目的收入是多少,则应将其排除在计算之外,这是遵循 SQL 标准的 Postgres 为您所做的。

如果您无法修复数据,但实际上该表中的所有 NULL 都应被视为 0 - 或其他一些固定值 - 您可以在聚合内使用 COALESCE:

 SELECT AVG(COALESCE(revenue, 0)) as forced_average

关于postgresql - Postgres 平均计算忽略空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49557047/

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