Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在具有聚合函数的简单查询中使用DISTINCT REDUNDED是否是多余的_Sql_Sql Server_Oracle - Fatal编程技术网

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

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

使用聚合函数的简单查询中的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是冗余的


编辑:修复了缺少的按销售人员分组的问题

假设您缺少
按销售人员分组的问题
(在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)按销售人员列出的销售组