这应该很简单,并显示我的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)
小智 28
从Oracle 10.2开始,他们引入了一个GREATEST功能,可以满足您的需求.还有一个LEAST功能.
例子:
select greatest(1,2) from dual;
Run Code Online (Sandbox Code Playgroud)GREATEST(1,2) ------------- 2
select greatest(8,6,4,2) from dual;
Run Code Online (Sandbox Code Playgroud)GREATEST(8,6,4,2) ----------------- 8
select greatest(-1,-2) from dual;
Run Code Online (Sandbox Code Playgroud)GREATEST(-1,-2) --------------- -1
select greatest('A','B','CCC','D') from dual;
Run Code Online (Sandbox Code Playgroud)GREATEST('A','B','CCC','D') --------------- D
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)