首页 新闻 会员 周边 捐助

sqlserver 随机生成一个指定范围值

0
悬赏园豆:10 [已解决问题] 解决于 2015-12-04 08:50

sqlserver 2008 数据库有30,40,50三个优先级值,他们分别占的比例为20%,30%,50%

根据这个比例随机生成一个值(30,40,50中的一个),这个要怎么写?

陀螺-的主页 陀螺- | 初学一级 | 园豆:74
提问于:2013-07-15 16:44
< >
分享
最佳答案
2

一种实现方式:

declare @rd int
set @rd = cast(ceiling(rand()*10) as int)  
select case when @rd>=1 and @rd<=2 then 30
            when @rd>=3 and @rd<=5 then 40
            else 50 end

收获园豆:7
Eddiew | 菜鸟二级 |园豆:286 | 2013-07-15 17:20

正解

天边彩云 | 园豆:629 (小虾三级) | 2013-07-16 11:11
其他回答(2)
0

一种实现方式:

SELECT TOP 1 *
FROM (VALUES (30), (40), (50)) AS X(a)
ORDER BY newid()
收获园豆:3
dudu | 园豆:29568 (高人七级) | 2013-07-15 17:19

那如果占的比例值要随时修改,然后随机生成新的值,这个要怎么做?

支持(0) 反对(0) 陀螺- | 园豆:74 (初学一级) | 2013-07-15 17:52

@t-h: 将比例值存在一张表中,然后从表中SELECT

支持(0) 反对(0) dudu | 园豆:29568 (高人七级) | 2013-07-15 17:57

@dudu: 嗯。恕我愚昧,您上面的实现方式,那里好像没有用到比例值吧,还是说我没有看懂。呵呵

支持(0) 反对(0) 陀螺- | 园豆:74 (初学一级) | 2013-07-15 18:54
0

路过学习

panjk | 园豆:712 (小虾三级) | 2013-07-22 11:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册