Você pode fazer isso de maneira mais simples no Postgres assim (usando colunas de matriz)
CREATE TEMP TABLE output AS SELECT
id, cat, ARRAY_AGG(realtime) as time, ARRAY_AGG(value) as values
FROM input GROUP BY id, cat;
Em seguida, selecione o que quiser na tabela de saída.