首页 > Oracle SQL > 求任意一个数字在某一个序列中的位置

求任意一个数字在某一个序列中的位置

2014年2月13日 发表评论 阅读评论

        有一个步长一定的数字序列,例如步长是5,数字序列就是0,5,10,15,20,25.......现在给出任意一个数字看该数字更靠近那个,例如22介于20和25直接更靠近20,结果是20。这个问题来源于在做期权项目中计算期货合约是实值,虚值,还是平直。以下是SQL: 

21:06:52 SCOTT@ orcl>var num number;
21:07:06 SCOTT@ orcl>exec :num:=99;

PL/SQL 过程已成功完成。

已用时间:  00: 00: 00.00
21:07:15 SCOTT@ orcl>select case
21:07:41   2           when abs(m1 - :num) >= abs(m2 - :num) then
21:07:41   3            m2
21:07:41   4           else
21:07:41   5            m1
21:07:41   6         end result
21:07:41   7    from (select max(l) m1, max(l) - 5 m2
21:07:41   8            from (select level l from dual connect by level <= :num + 5)
21:07:41   9           where mod(l, 5) = 0);

    RESULT
----------
       100

已选择 1 行。
21:08:01 SCOTT@ orcl>exec :num:=77;

PL/SQL 过程已成功完成。

已用时间:  00: 00: 00.00
21:08:17 SCOTT@ orcl>/

    RESULT
----------
        75

已选择 1 行。

已用时间:  00: 00: 00.00

分类: Oracle SQL 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.