我刚刚发现在MIN()和MAX()函数中允许使用DISTINCT关键字,但我没有使用它。
对于上述某个函数的调用是否会返回相同的结果,无论是否有DISTINCT关键字?
SELECT MAX(salary), MAX(DISTINCT salary) from EMPLOYEES;
我的意思是,我在COUNT(),SUM()或AVG()上使用DISTINCT关键字有所不同,但我认为MIN()和MAX()
都没用答案 0 :(得分:0)
是的,DISTINCT
和MAX()
中的MIN()
无效。在COUNT()
中,所有值的SUM()
或AVG()
结果与唯一值的结果不同。例如, -
with t as
(
select 1 as val from dual union all
select 1 as val from dual union all
select 1 as val from dual union all
select 2 as val from dual union all
select 3 as val from dual
)
select
COUNT(val), -- =5 (5 rows was selected)
COUNT(distinct val), -- =3 (3 rows with unicue value)
SUM(val), -- =8 (1+1+1+2+3)
SUM(distinct val), -- =6 (1+2+3, only unique values)
AVG(val), -- =1,6 (sum()/count() = 8/5)
AVG(distinct val) -- =2 (sum(distinct)/count(distinct) = 6/3)
from t
Max(val)
回答了这个问题 - “此列表[1,1,1,2,3]中的最大值是多少?”因此,Max(distinct val)
应该在[1,2,3]值列表中查找最大值。显而易见,结果将是平等的。