查找表中所有数值变量的均值、标准差、百分位数

use*_*255 2 sql postgresql stored-procedures plpgsql greenplum

我在表中有 30 个数字数字列。我想为表中的所有列找到平均值、标准和百分位数。我不想像下面那样手动编写所有列名

select date,
      avg(col1), stddev(col1),
      avg(col2), stddev(col2), 
from table name group by date;
Run Code Online (Sandbox Code Playgroud)

有什么方法可以一次找到所有列的均值、标准差和百分位数。

Gor*_*off 6

您可以使用横向连接简化逻辑:

select which, min(val), max(val), stddev(val), avg(val)
from t, lateral
     (values ('col1', col1), ('col2', col2), . . . 
     ) v(which, val)
group by which;
Run Code Online (Sandbox Code Playgroud)

您仍然需要列出列,但您只需要在values子句中这样做一次。