oracle中的 greatest 函数和 least 函数 求同一行中多个列的最大值
greatest (col1,col2,col3...)
least (col1,col2,col3...)
greatest (max(col1),max(col2),max(col3)...) -- 和聚合函数一起使用
复制
求同一行中,多个列的最大值,多个列的最小值
解决方法1:是使用case when 比较,但是同一个行的比较的列特别多的时候,显然不是很友好
例1--2个列:case when id1>id2 then id1 else id2 end
例2--3个列:case when id1>id2 then (case when id1>id3 then id1 else id3 end) else (case when id2>id3 then id2 else id3 end) end
复制
解决方法2:是使用unpivot行先转为列,再进行操作,显然也不是很友好
解决方法3:使用 greatest 和 least函数
看到有SQL中使用了 greatest 和 least函数 查了一下函数的作用,原来还能这样
with t as( select rownum id1,rownum+1 id2,rownum+3 id3 from dual connect by rownum<=10)
select id1,id2,id3,greatest(id1,id2,id3) max,least(id1,id2,id3) min from t;
ID1 ID2 ID3 MAX MIN
---------- ---------- ---------- ---------- ----------
1 2 4 4 1
2 3 5 5 2
3 4 6 6 3
4 5 7 7 4
5 6 8 8 5
6 7 9 9 6
7 8 10 10 7
8 9 11 11 8
9 10 12 12 9
10 11 13 13 10
with t as( select rownum id1,rownum+1 id2,rownum+3 id3 from dual connect by rownum<=10)
select greatest(max(id1),max(id2),max(id3)) max,least(min(id1),min(id2),min(id3)) min from t;
MAX MIN
---------- ----------
13 1
复制
最后修改时间:2021-04-18 18:42:20
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。