如何计算Oracle SQL中两个数字的最大值?

Pet*_* G. 27 sql oracle max

这应该很简单,并显示我的SQL无知:

SQL> select max(1,2) from dual;
select max(1,2) from dual
       *
ERROR at line 1:
ORA-00909: invalid number of arguments
Run Code Online (Sandbox Code Playgroud)

我知道max通常用于聚合.我可以在这里使用什么?

最后,我想使用类似的东西

select total/max(1,number_of_items) from xxx;
Run Code Online (Sandbox Code Playgroud)

其中number_of_items是一个整数,可以是0.我想在这种情况下也看到总数.

Mar*_*ith 74

看起来您正在使用Oracle,因此您可以使用此greatest功能代替max

select total/greatest(1,number_of_items) 
from xxx;
Run Code Online (Sandbox Code Playgroud)

  • 这是“最好的”答案。 (4认同)

小智 28

从Oracle 10.2开始,他们引入了一个GREATEST功能,可以满足您的需求.还有一个LEAST功能.

例子:

select greatest(1,2) from dual;

GREATEST(1,2)
-------------
            2
Run Code Online (Sandbox Code Playgroud)

select greatest(8,6,4,2) from dual;

GREATEST(8,6,4,2)
-----------------
               8
Run Code Online (Sandbox Code Playgroud)

select greatest(-1,-2) from dual;

GREATEST(-1,-2)
---------------
             -1
Run Code Online (Sandbox Code Playgroud)

select greatest('A','B','CCC','D') from dual;

GREATEST('A','B','CCC','D')
---------------
              D
Run Code Online (Sandbox Code Playgroud)

  • 从2010年开始就已经有了答案. (7认同)

Lie*_*ers 14

您可以使用CASE语句

SELECT Total = CASE WHEN number_of_items > 0 
               THEN total/number_of_items
               ELSE total END
FROM   xxx
Run Code Online (Sandbox Code Playgroud)