Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 计算特定值的平均值_Sql_Postgresql - Fatal编程技术网

Sql 计算特定值的平均值

Sql 计算特定值的平均值,sql,postgresql,Sql,Postgresql,我想计算一列的平均值,但我被卡住了,因为如果一个值在某个范围内,我只想包括它 因此,如果我有以下价值观: 100, 150, 500, 450, 300, 750 现在,我只想把大于400的值作为平均值的一部分 然后查询将计算这些值的平均值: 500, 450, 750 输出为(500+450+750)/3 我试过了 (一) 这将输出为(0+0+500+450+0+750)/6。这不是我想要的 (二) 如果没有大于400的值,则抛出一个错误,即用0除以 有人能帮忙吗?我正在使用Postgre

我想计算一列的平均值,但我被卡住了,因为如果一个值在某个范围内,我只想包括它

因此,如果我有以下价值观:

100, 150, 500, 450, 300, 750
现在,我只想把大于400的值作为平均值的一部分

然后查询将计算这些值的平均值:

500, 450, 750
输出为(500+450+750)/3

我试过了

(一)

这将输出为(0+0+500+450+0+750)/6。这不是我想要的

(二)

如果没有大于400的值,则抛出一个错误,即用0除以

有人能帮忙吗?我正在使用PostgreSQL。 谢谢

嗯,
AVG()
不计算空值,因此您可以使用查询并用
null
替换0:

select avg(case when value > 400 then value else null end) avg_val
from test
由于else的默认值为
NULL

select avg(case when value > 400 then value end) avg_val
from test
简单地说:

select avg(value)
from test
where value > 400
从价格介于10和30之间的产品中选择平均价格作为PriceAverage


在价格>=2500的投标中,选择平均价格作为平均价格

但我认为他也希望用其他值来选择它,只是平均值列应该是大于该值的值400@sagi,您可能是对的,但OP需要在示例数据和结果中添加其他列。@Rajeevkumar此答案最适合这个问题。让问题和样本尽可能简单和完整,以反映真正的问题。@Rajeevkumar没问题:)到时候我会非常感谢您的批准
select avg(case when value > 400 then value end) avg_val
from test
select avg(value)
from test
where value > 400