我需要在java或sql中实现以下逻辑。
信用评级从1到11。每个等级对应x,我有3个等级,实际上是x+,x和x-。每个年级之间的差异称为一个台阶。例如,2和2-是单(1)步,2+和2-是双(2)步,2-和3+也是单(1)步。
我的目标是通过编程找出两个信用评级值之间的步数,直到步数的差值为3。
我试图用条件语句(if else/case)来解决这个问题,但更深入的分析得出结论,这需要大约50多条这样的语句,至少在代码布局方面,这不是一件非常有效的事情。
有没有其他方法可以得到步数?也许使用一个临时数据结构,然后使用它进行查找?
注意:我可以将这两个信用评级值从db拉入java代码,然后计算步骤数。或者,我需要创建一个数据库对象(比如procedure、function),然后以这种方式计算步骤数,这样我的java代码就可以直接使用它。
2条答案
按热度按时间58wvjzkj1#
最简单的方法是定义一个包含所有信用评级及其头寸的表:
那么对于任何信用评级,你都可以使用
lead()
或者lag()
去拿下一个或上一个——或三步之外的一个。不过,正如你所描述的那样,
number - 1
或者number + 1
离评分还有三步之遥。px9o7tmv2#
我只需要给每个等级分配一个数值,然后用一个函数从另一个中减去一个。
不过,我不确定pl/sql函数是否可以接受,因为您一开始就说希望使用java或sql。