Postgresql 交叉表替代方案

Posgresql crosstab alternative

我正在寻找交叉表替代方案。我在多行的 Timescaledb (posgresql) 超表中有数据:

例如,当类别 2 > 4 时,我需要计算类别 = 1 的平均值。我现在正在做的是使用交叉表进行数据透视,然后计算类别 1 的平均值。有没有办法做到这一点没有数据透视表(交叉表)?

有些查询我无法使用交叉表,因为在我只选择 'id' 的情况下不起作用。它将类别聚合为一行。

我正在寻找可以使用单个值作为 'id' 并且比交叉表更快的东西。我有庞大的数据集。

您可以只使用条件聚合。在 Postgres 中,这看起来像:

select id,
       avg(value) filter (where category = 1)
from t
where category in (1, 2)
group by id
having avg(value) filter (where category = 2) > 4;