Netezza は、その random() 関数が 0.0 から 0.99999 の間の浮動小数点数を生成すると言っています...範囲内 (たとえば、5 から 10 の間) でランダムな int を生成しようとしています。インターネットは、分数を範囲内の数値にスケーリングするには、次のような方程式を使用するように私に言いました:
select f,count(*) from (
select CAST(5 + random() * (10-5) as INT) as f
from table_of_numbers
where number between 1 and 5000
) x group by 1 order by 1
ただし、そのコードを使用すると、極端な値がサンプルで過小評価されます。
F COUNT
5 486 <---
6 992
7 1057
8 1000
9 937
10 528 <---
これを修正する方法を知っている人はいますか?
ありがとう!