3

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

select DISTINCT salesperson, SUM(sales_amt) from sales GROUP BY salesperson

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

select salesperson, SUM(DISTINCT sales_amt) from sales GROUP BY salesperson

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

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

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

4

3 回答 3

5

假设您丢失了GROUP BY salesperson(如果您省略 group by,它在 SQL Server 中无效),DISTINCT则在您的第一个查询中是多余的。通过聚合GROUP BY有效地执行 a 。DISTINCTsalesperson

select DISTINCT salesperson, SUM(sales_amt) from sales GROUP BY salesperson

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

于 2012-04-09T17:39:37.077 回答
2

SELECT DISTINCT [Col1], [Col2], ..., [ColN] FROM [Table]

是相同的:

SELECT [Col1], [Col2], ..., [ColN] FROM [Table] GROUP BY [Col1], [Col2], ..., [ColN]

DISTINCT之后SELECT是“我想要GROUP BYSELECT的 .

于 2012-04-09T17:41:48.653 回答
1

您编写的任何查询都不会执行,因为您需要通过 group by 才能返回聚合 (SUM())。你需要这样的东西:

SELECT SalesPerson
, SUM(Sales_AMT) AS SalesAmount
FROM Sales 
GROUP BY SalesPerson
于 2012-04-09T17:42:34.597 回答