什么';Oracle MIN()和MAX()组函数中使用DISTINCT关键字的目的是什么?

什么';Oracle MIN()和MAX()组函数中使用DISTINCT关键字的目的是什么?,oracle,distinct,Oracle,Distinct,我刚刚发现在MIN()和MAX()函数中允许使用DISTINCT关键字,但我没有得到它的使用 对上述函数之一的调用是否会返回相同的结果(带或不带DISTINCT关键字) SELECT MAX(salary), MAX(DISTINCT salary) from EMPLOYEES; 我的意思是,在COUNT()、SUM()或AVG()上使用DISTINCT关键字会有所不同,但我认为在MIN()和MAX()中都是无用的,在MAX()和MIN()中DISTINCT是无用的。在COUNT()中,SU

我刚刚发现在MIN()和MAX()函数中允许使用DISTINCT关键字,但我没有得到它的使用

对上述函数之一的调用是否会返回相同的结果(带或不带DISTINCT关键字)

SELECT MAX(salary), MAX(DISTINCT salary) from EMPLOYEES;

我的意思是,在COUNT()、SUM()或AVG()上使用DISTINCT关键字会有所不同,但我认为在MIN()和MAX()中都是无用的,在
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 t

Max(val)
回答了一个问题——“此列表[1,1,1,2,3]中的最大值是多少?”因此,
Max(distinct val)
应该在[1,2,3]值列表中查找最大值。很明显,结果是相等的。

是的,
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 t

Max(val)
回答了一个问题——“此列表[1,1,1,2,3]中的最大值是多少?”因此,
Max(distinct val)
应该在[1,2,3]值列表中查找最大值。很明显,结果是相等的。

是的,这是无用的,但仍然不需要锁定关键字的功能。这个选项不可能对所有聚合/分析函数都通用吗?也许这是SQL解析器的功能。是的,这是无用的,但仍然不需要锁定关键字的功能。这个选项不可能是所有聚合/分析函数的通用选项吗?也许这是SQL解析器的功能。是的,这是无用的,但仍然不需要锁定关键字的功能。这个选项不可能是所有聚合/分析函数的通用选项吗?可能是SQL解析器的特性。