I次の表がありますいくつかのテスト値でT-SQLでのラッフルチケットの勝者を描画
DECLARE @TicketHolder TABLE
(
[Name] VARCHAR(100),
Tickets DECIMAL(18, 8)
);
:
INSERT INTO @TicketHolder ([Name], Tickets)
SELECT 'Bob', 10.37
UNION ALL
SELECT 'Lisa', 1
UNION ALL
SELECT 'Robbie', 150.981
UNION ALL
SELECT 'Cathy', 97.888531;
260.239531チケットが購入されていますが。ボブはチケットの〜58%を所有している、キャシー〜38%、およびその上:
SELECT [Name], Tickets/(SELECT SUM(Tickets) AS WinProb
FROM @TicketHolder) WinProb FROM @TicketHolder
今、私は1つを選択する必要があり、唯一のランダム勝者何に基づいて(RANDを(使用)は十分です)各人が所有するチケット。何百万もの行がある可能性があるので、ループは疑問から外れています。勝者はT-SQLを使ってどのように描くことができますか?
rand() * (select sum(tickets) from @TicketHolder)
あなたは乱数が描かれたブロックの所有者を見つけるために、実行中の合計クエリとそれを組み合わせることができます。
あなたは、チケットごとに1つの行で一時テーブルを作成した場合(ボブなどのためのより多くの行を)買って、あなただけの行を選ぶことができます。 – bzlm
この宿題はありますか? –