1から10までの数字で、1以上10未満のフロートを意味する場合、それは簡単です。
select random() * 9 + 1
これは次の方法で簡単にテストできます:
# select min(i), max(i) from (
select random() * 9 + 1 as i from generate_series(1,1000000)
) q;
min | max
-----------------+------------------
1.0000083274208 | 9.99999571684748
(1 row)
1以上10未満の整数が必要な場合は、簡単です。
select trunc(random() * 9 + 1)
繰り返しますが、簡単なテスト:
# select min(i), max(i) from (
select trunc(random() * 9 + 1) as i from generate_series(1,1000000)
) q;
min | max
-----+-----
1 | 9
(1 row)