暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

求同一行中多个列的最大值

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

李玉
关注
暂无图片
获得了15次点赞
暂无图片
内容获得6次评论
暂无图片
获得了38次收藏