誰かが私を助けてくれることを願っています。
MSサーバー2008でSQLユーザー定義関数を使用して、次のことを実行しようとしています
私は、顧客がいつ銀行を離れるかを予測しようとしています。あなたが去るまで、一連のコイントスでこれを行っています。コイントスは常に 50/50 であるとは限らないため、確率をパラメーターとして関数に渡すだけでなく、現在の顧客の在職期間も渡すことができます。
問題は、関数内で RAND() を使用することが許可されていないことです。理由はわかりませんが、それは問題ありません。理由があるに違いありません。
ここに私の機能があります:
create function NewTenure (@tenure integer, @p float)
returns integer
as
begin
declare @r float
declare @newten int
declare @attrite binary
set @attrite=0
set @newten = @tenure
set @r = RAND()
while (@attrite = 0)
begin
if (@r <= @p) set @attrite = 1;
if (@r > @p) set @newten = @newten+1
end
return(@newten)
end
私が見たように、0 から 1 の間のランダムな値を生成する必要があるため、それを確率と比較して、顧客が去ったかどうかを判断できます。RAND() が許可されていない場合、関数内でそれを生成する SQL トリックはありますか? (私は何年も前に学校で、独自の乱数ジェネレーターを作成できることを知っていましたが、それはしたくありませんし、そうしなければならないとも信じていません。乱数は、期待されるべき基本的なコンピューター関数です。私が今まで使ったことのある他の言語にはそれがありました)
新しいクエリで関数を呼び出して、退社時に予測された在職期間で一時テーブルを更新する予定です。これは、他の複雑な計算に使用されます。