我刚刚发现MIN()和MAX()函数中允许使用DISTINCT关键字,但我不知道它的用法。
无论是否使用DISTINCT关键字,调用上述函数之一都会返回相同的结果吗?
SELECT MAX(salary), MAX(DISTINCT salary) from EMPLOYEES;我的意思是,在COUNT()、SUM()或AVG()上使用DISTINCT关键字是有区别的,但我认为在MIN()和MAX()中都是无用的。
发布于 2015-08-28 15:54:37
是的,MAX()和MIN()中的DISTINCT是没用的。在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 tMax(val)回答了这个问题-“这个列表1,1,1,2,3中的最大值是多少?”因此,Max(distinct val)应在1、2、3值列表中查找最大值。很明显,结果将是平等的。
https://stackoverflow.com/questions/30598412
复制相似问题