规范化范围内的值

时间:2017-07-18 22:58:21

标签: sql postgresql

是否有一个公式可以规范化范围内的值,使其平均值等于范围的中间值?

例如,如果我有值

1,2,3,4,4,5

(注意它们在1-5的范围内)然后我想要调整每个值,使它们的平均值等于3(范围的中间)。

1 个答案:

答案 0 :(得分:2)

您可以减去平均值并添加3:

select 3 + (t.x - avg(t.x) over ())
from t;

如果你特别想要中间范围:

select (max(t.x) over () + min(t.x) over ()) / 2 + (t.x - avg(t.x) over ())
from t;