Ваша непосредственная проблема в том, что вам нужно least()
и greatst()
вместо min()
и max()
- последние являются агрегатными функциями, которые работают над наборами, а не над списком значений.
Но я также думаю, что ваш запрос не делает то, что вы хотите. random()
пересчитывается при каждом вызове. Предположительно, вам нужно постоянное значение в выражении case
, поэтому что-то вроде:
insert into salaries (num)
select case when rnd < 0.5
then least(8 + floor(rnd * 4), 10)
else greatest(8 - floor(rnd * 4), 1)
end
from (select my_id, random() rnd from generate_series(1,1) as seq(my_id)) t
Это Все еще Неясно, для чего предназначен generate_series()
запрос, но я Предполагается, что это побочный эффект упрощенного запроса ...