带有聚合函数的简单查询中的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销售员
答案 0 :(得分:5)
假设您缺少GROUP BY salesperson
(如果省略该组,则在SQL Server中无效),DISTINCT
在您的第一个查询中是多余的。 GROUP BY
通过汇总DISTINCT
来有效地执行salesperson
。
select DISTINCT salesperson, SUM(sales_amt) from sales GROUP BY salesperson
正如您所指出的那样,您正确地将DISTINCT
放置在聚合SUM()
内可能会产生不同的行集。
答案 1 :(得分:2)
SELECT DISTINCT [Col1], [Col2], ..., [ColN] FROM [Table]
与:
相同 SELECT [Col1], [Col2], ..., [ColN] FROM [Table] GROUP BY [Col1], [Col2], ..., [ColN]
DISTINCT
之后的SELECT
是“我希望GROUP BY
我SELECT
中的每一列的简写。{p> {{1}}。是的,如果您已经需要,我会说这是多余的无论如何都是一个小组(如果你将在那里有一个聚合函数你会这样做。)
答案 2 :(得分:1)
您编写的查询都不会执行,因为您需要拥有该组以返回聚合(SUM())。你需要这样的东西:
SELECT SalesPerson
, SUM(Sales_AMT) AS SalesAmount
FROM Sales
GROUP BY SalesPerson