Sql 在具有聚合函数的简单查询中使用DISTINCT REDUNDED是否是多余的
使用聚合函数的简单查询中的DISTINCT是否有任何影响Sql 在具有聚合函数的简单查询中使用DISTINCT REDUNDED是否是多余的,sql,sql-server,oracle,Sql,Sql Server,Oracle,使用聚合函数的简单查询中的DISTINCT是否有任何影响 select DISTINCT salesperson, SUM(sales_amt) from sales GROUP BY salesperson 我意识到,DISTINCT可能会对更复杂的查询产生影响,例如: select salesperson, SUM(DISTINCT sales_amt) from sales GROUP BY salesperson (平台对该语法的支持可能有所不同) 但我想确认,在简单查询示例中,DI
select DISTINCT salesperson, SUM(sales_amt) from sales GROUP BY salesperson
我意识到,DISTINCT可能会对更复杂的查询产生影响,例如:
select salesperson, SUM(DISTINCT sales_amt) from sales GROUP BY salesperson
(平台对该语法的支持可能有所不同)
但我想确认,在简单查询示例中,DISTINCT是冗余的
编辑:修复了缺少的按销售人员分组的问题假设您缺少
按销售人员分组的问题
(在SQL Server中,如果忽略分组依据,则该问题无效),独立的
在第一次查询中是多余的。分组依据
通过聚合销售人员
在这里有效地执行不同的
select DISTINCT salesperson, SUM(sales_amt) from sales GROUP BY salesperson
正如您所指出的,您可以纠正将
DISTINCT
放置在聚合SUM()
中可能会产生不同的行集。从[表]中选择DISTINCT[Col1]、[Col2]、…、[ColN]
同:
通过[Col1]、[Col2]、…、[ColN]从[Table]组中选择[Col1]、[Col2]、[ColN]
DISTINCT
后面的SELECT
是“我想groupby
我的SELECT
中的每一列”的简写。因此,如果你已经需要一个groupby,我会说这是多余的(如果你想在那里有一个聚合函数,你就需要这样做).您编写的两个查询都不会执行,因为您需要group by以返回聚合(SUM())。您需要类似以下内容:
SELECT SalesPerson
, SUM(Sales_AMT) AS SalesAmount
FROM Sales
GROUP BY SalesPerson
很抱歉,修复了第二条中缺少的“GROUP BY”(分组依据)的区别在现实生活中可能不是很有用;如果一个销售员以每把3.23美元的价格销售了1000把螺丝刀,它将返回3美元23美分。如果您想按这样的方式计算每个销售员的客户数,它将更有用:
select salesperson,count(DISTINCT customer)按销售人员列出的销售组
。