在具有聚合函数的简单查询中使用DISTINCT是多余的

tbo*_*one 3 sql sql-server oracle

具有聚合函数的简单查询中的DISTINCT是否有任何影响?

select DISTINCT salesperson, SUM(sales_amt) from sales GROUP BY salesperson
Run Code Online (Sandbox Code Playgroud)

我意识到有更复杂的查询,其中DISTINCT 可以产生影响,例如:

select salesperson, SUM(DISTINCT sales_amt) from sales GROUP BY salesperson
Run Code Online (Sandbox Code Playgroud)

(平台对该语法的支持可能会有所不同)

但我想确认在简单的查询示例中,DISTINCT是多余的.

编辑:修复了缺少GROUP BY的销售人员

Mic*_*ski 5

假设您丢失GROUP BY salesperson(如果省略该组,则在SQL Server中无效),DISTINCT在您的第一个查询中是多余的.在GROUP BY有效地执行DISTINCT由聚集在这里salesperson.

select DISTINCT salesperson, SUM(sales_amt) from sales GROUP BY salesperson
Run Code Online (Sandbox Code Playgroud)

正如您所指出的那样,正确的是,聚合DISTINCT 内部的放置SUM()可能会产生不同的行集.