根据postgres中的给定值选择记录

时间:2015-09-01 13:59:43

标签: sql postgresql

我在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,如果这样善意推荐一个解决方案..

1 个答案:

答案 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;