Я обычно избавляюсь от проблем, подобных той, которую вы упоминаете при использовании CTE (Common Table Expressions).Я бы вычислял выражение только один раз в cte, а затем использовал бы его столько раз, сколько мне нужно.
Например, я бы перефразировал ваш запрос как:
with
cte1 as (
select
(date_part('minute',(period_start - :start)) / 6) as mins,
high
from x where ...
)
select mins, max(high) as high
from cte1
group by mins