小编典典

在postgres中跨多个列聚合函数

sql

我有一个包含多个包含整数(a1,a2,a3等)的字段的postgresql表。

我想一次跨多个列运行汇总函数(均值,标准差等)。(其中一些可能具有合理数量的空值,因此我不想只生成列平均值然后再对它们求平均值)。

我可以得到一组整数

SELECT unnest(array[a1,a2,a3]) as values FROM table

但是我然后无法获取聚合函数以将此作为输入。

谁能给我任何有关如何使它工作的提示?


阅读 178

收藏
2021-03-23

共1个答案

小编典典

使用子查询,您可以使用所有行:

SELECT sum(val) FROM (
    SELECT unnest(array[a1,a2,a3]) as val FROM table) alias;

您还可以对行进行分组,例如:

SELECT field, sum(val) FROM (
    SELECT field, unnest(array[a1,a2,a3]) as val FROM table) alias
GROUP BY field;
2021-03-23