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