我在postgres中有一张表格如下,
alg_campaignid | alg_score | cp | sum
----------------+-----------+---------+----------
9829 | 30.44056 | 12.4000 | 12.4000
9880 | 29.59280 | 12.0600 | 24.4600
9882 | 29.59280 | 12.0600 | 36.5200
9827 | 29.27504 | 11.9300 | 48.4500
9821 | 29.14840 | 11.8800 | 60.3300
9881 | 29.14840 | 11.8800 | 72.2100
9883 | 29.14840 | 11.8800 | 84.0900
10026 | 28.79280 | 11.7300 | 95.8200
10680 | 10.31504 | 4.1800 | 100.0000
我必须根据从0到100的随机生成的数字选择记录。如果随机数在0到12.4000之间,则应返回第一条记录,如果rendom在12.4000和24.4600之间,则返回第二条记录,如果随机数介于95.8200和100.0000之间。
例如 如果选择的随机数为8,则应返回第一条记录 要么 如果挑选的随机数是48,那么应该返回第四条记录
是否有可能做这个postgres,如果这样善意推荐一个解决方案..
答案 0 :(得分:0)
是的,你可以在Postgres中做到这一点。如果要在数据库中生成数字:
with r as (
select random() * 100 as r
)
select t.*
from table t cross join r
where t.sum <= r.r
order by t.sum desc
limit 1;