Postgres — несколько union с почти одинаковым запросом, как упростить?
Можно ли как-то упросить запрос, чтобы не копипастить 10 раз одно и то же?
select distinct on (z) h 40, t.* from t where h > 40
union
select distinct on (z) h 50, t.* from t where h > 50
union
...
union
select distinct on (z) h 60, t.* from t where h > 150
Или Вы что-то важное недоговариваете, или это похоже на невероятно ядреный генератор случайных чисел )) "DISTINCT ON ( expression [, ...] ) keeps only the first row of each set of rows[...] Note that the "first row" of each set is unpredictable unless ORDER BY is used"
un1t: И что в нем, только z, или еще что-то? И, вообще, опишите подробнее проблему, цель запроса и примерную структуру распределения данных в таблице... Если это все вдруг супер-пупер коммерческая тайна, придумайте иносказательную аналогию, но объясните ЦЕЛЬ!
Bыполните, в конце концов, EXPLAIN и засветите результаты.
Иначе непонятно, нужно ли, и можно ли это оптимизировать. Ибо избавиться от большого некрасивого куска текста в стейтменте, это, как бы, одно, а реально оптимизировать запрос - как бы, совсем другое ))