oracle中有greatest和least两个函数用来得到多列数据中的最大值和最小值.
可是好像没办法得到多列数据中的次大值、第三大值...这些数据
我目前的做法是,把需要对比的多列进行行转列,
接着row_number()OVER(PARTITION BY col1 ORDER BY col2 desc)
这样来获得可是效率上低了很多!
敢问各位大大,是否小弟孤陋寡闻,Oracle中还有其他函数来获取这些值?
又或者有更好的思路以获取这些值?
不胜感激
可是好像没办法得到多列数据中的次大值、第三大值...这些数据
我目前的做法是,把需要对比的多列进行行转列,
接着row_number()OVER(PARTITION BY col1 ORDER BY col2 desc)
这样来获得可是效率上低了很多!
敢问各位大大,是否小弟孤陋寡闻,Oracle中还有其他函数来获取这些值?
又或者有更好的思路以获取这些值?
不胜感激
decode(a,greatest(a,b,c),least(a,b,c),a),
decode(b,greatest(a,b,c),least(a,b,c),b),
decode(c,greatest(a,b,c),least(a,b,c),c)
) second_
不过,如果想要的结果是可以并列最大的话不行.
比如
1、2、2、3、3、4、4、5
最大、次大、第三大...想要这样的结果
5、4、4、3、3、2、2、1
其实,我想实现的是Excel的Large函数
不过前提这两个都需要先把列转行..