SQL Tips

 

[SQL Server] 1%(1/100)の確率で当たり(くじ)を作成しよう。イベント(キャンペーン)用。

確率で当たりを出すイベント(キャンペーン)が色々なサイトでやっていますが、
その処理はどのようにするか説明したいと思います。

まず、「1~100」間の数字をランダムで発生するSQLを作成します。

SELECT CONVERT(int, (RAND()*100))+1

このまま実行してみてください。
その結果を見た方が理解するのが早いと思います。
このシンプルなSQLを利用して1%(1/100)の確率でイベント(キャンペーン)をする時に使うことができます。

例えば、0.1%(1/1000)の確率にしたい場合は下記のように作成します。

SELECT CONVERT(int, (RAND()*1000))+1

100になっていた部分を1000に変えるだけで確率を変更できます。

それでは1%(1/100)確率で当たる処理をするSQLを作成してみましょう。

IF (1 = (CONVERT(int, (RAND()*100))+1))
BEGIN
SELECT N'当たり'
END
ELSE
BEGIN
SELECT N'はずれ'
END

当たりの確率が6%(6/100)にするとSQLは下記のように作成します。

IF (6 >= (CONVERT(int, (RAND()*100))+1))
BEGIN
SELECT N'当たり'
END
ELSE
BEGIN
SELECT N'はずれ'
END

シンプルに作成してみました。
簡単でしょう?
このエントリーをはてなブックマークに追加
2016-08-16 12:34:05   688

コメント

[SQL Server] リンクサーバーのリストを取得する方法 - sp_linkedservers

-.日付:2017-01-16   カテゴリ : -   閲覧数:1811

[SQL Server] ガチャ(GACHA)システムを作ろう!

-.日付:2016-08-18   カテゴリ : -   閲覧数:890

[SQL Server] クーポンコード(シリアルコード)発行する方法

-.日付:2016-08-12   カテゴリ : -   閲覧数:591

[SQL Server] 使い捨てメールサービス遮断(Block)してください。

-.日付:2016-03-18   カテゴリ : -   閲覧数:1638

MaxMind GEOIP Function for Microsoft SQL SERVER

-.日付:2016-02-16   カテゴリ : -   閲覧数:706

[SQL Server] IPAddressからCクラス(C Class)まで抽出(取得)する方法

-.日付:2016-02-10   カテゴリ : -   閲覧数:633

Copyright © 2015 INNOYA.COM All rights reserved. RSS