Вы можете упростить логику, используя боковое соединение:
select which, min(val), max(val), stddev(val), avg(val)
from t, lateral
(values ('col1', col1), ('col2', col2), . . .
) v(which, val)
group by which;
Вам все еще нужно перечислить столбцы, но вам нужно сделать это только один раз в предложении values
.